home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / c / inter40c.zip / INTERRUP.J < prev    next >
Text File  |  1994-04-03  |  342KB  |  9,012 lines

  1. Interrupt List, part 10 of 11
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994 Ralf Brown
  3. --------*-61---------------------------------
  4. INT 61 - reserved for user interrupt
  5. --------b-61---------------------------------
  6. INT 61 - Atari Portfolio - EXTENDED BIOS
  7.    provides subfunctions such as turning off the machine, accessing internal
  8.    variables, and mapping memory cards
  9. SeeAlso: INT 60"Atari"
  10. --------b-61---------------------------------
  11. INT 61 - HP 95LX System Manager - LOAD DS
  12. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  13. --------r-61---------------------------------
  14. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  15. SeeAlso: INT 60"JPI"
  16. --------d-61---------------------------------
  17. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  18. Note:    this vector stores the second four bytes of the parameter table for
  19.       hard disk 0
  20. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  21. --------I-61---------------------------------
  22. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  23.     BX:DX -> control block
  24. SeeAlso: INT 67"Sangoma"
  25. --------v-61---------------------------------
  26. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  27. Note:    the virus copies the original INT 21h vector into INT 61h
  28. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  29. --------N-61---------------------------------
  30. INT 61 - TCPOpen kernel - API
  31.     ES:BX -> request packet (see below)
  32. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  33. Note:    the interrupt number may be set to any value from 60h through 7Fh
  34.       (default 61h) via the configuration file; there does not appear
  35.       to be an installation check, though function FFFFh can be used to
  36.       verify that the software is indeed functioning
  37.  
  38. Format of request packet:
  39. Offset    Size    Description
  40.  00h  8 BYTEs    ???
  41.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  42.  0Ah    WORD    ???
  43.  0Ch  2 BYTEs    ???
  44.  0Eh    WORD    (return) return code
  45.  10h  2 BYTEs    ???
  46.  12h    WORD    ???
  47.  14h    WORD    (return) 0001h if requested function complete
  48.  16h    WORD    (return) ???
  49.  18h  6 BYTEs    ???
  50.  1Eh    DWORD    -> ???
  51.  22h    WORD    ??? or 0000h
  52.  24h    WORD    (return) ???
  53.  
  54. Function FFFFh: installation verification
  55.     Return: offset 10h = BEEFh
  56.         offset 14h = 0001h
  57.         offset 24h = ???
  58. Index:    installation check;TCPOpen kernel
  59. --------N-61---------------------------------
  60. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  61.     AH = system call number (see also entries below)
  62.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  63.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  64. Return: CF clear if successful
  65.     CF set on error
  66.         AL = basic error (see below)
  67.         AH = suberror number
  68. Notes:    the installation check consists of testing for the signature "TCPTSR"
  69.       three bytes beyond the start of the interrupt handler
  70.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  71.       interrupt from 20h through E0h
  72. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  73.       greater than 54h in AH may crash the system.    Other kernels may have
  74.       this bug as well.
  75. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  76. Index:    installation check;PC/TCP
  77.  
  78. Values for error code:
  79.  00h "NET_NOERR" successful
  80.  01h "NET_ERR_INUSE" protocol or socket already in use
  81.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  82.  03h "NET_ERR_NOMEM" out of memory
  83.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  84.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  85.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  86.  07h "NET_ERR_NOHOST" no host bound to specified connection
  87.  08h "NET_ERR_CANTOPEN" unable to open file
  88.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  89.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  90.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  91.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  92.  0Dh "NET_ERR_TIMEOUT" operation timed out
  93.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  94.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  95.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  96.     Subcodes: 0= no error, 1 = Host unreachable
  97.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  98.             is zero
  99.  12h "NET_ERR_BADARG" invalid argument
  100.  13h "NET_ERR_EOF" foreign host closed its end of connection
  101.  14h "NET_ERR_RESET" connection has been reset
  102.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  103.             with no data available
  104.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  105.  17h "NET_ERR_NODESC" could not allocate network descriptor
  106.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  107.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  108.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  109.  1Bh kernel busy, try again later
  110.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  111.     (see subcodes below)
  112. ---v2.1+---
  113.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  114.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  115.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  116.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  117.  21h "NET_ERR_EMM" expanded memory error
  118.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  119.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  120.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  121.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  122.  
  123. Values for subcodes of error 0Ah "NET_ERR_HOST_UNREACHABLE":
  124.  00h    no error
  125.  01h    host unreachable
  126.  02h    ARP failed
  127.  03h    hardware failure
  128.  04h    link failure
  129.  05h    no route
  130.  06h    gateway down
  131.  
  132. Values for subcodes of error 1Ch "NET_ERR_ICMPMESG":
  133.  07h    unrecognised
  134.  08h    can't fragment
  135.  09h    srcr_fail
  136.  0Ah    source quench
  137.  0Bh    time exceeded
  138.  0Ch    parameter problem
  139.  0Dh    admin_prohib. see also code 0Ah
  140. --------N-6100-------------------------------
  141. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  142.     AH = 00h
  143.     DS:SI -> 216-byte buffer for network debugging information (see below)
  144. Return: CF clear
  145.     AX = 0000h
  146.     buffer filled
  147. Notes:    this call is not documented by FTP, Inc. for any version
  148.     most of the information returned by this call is available via the
  149.       documented get_kernel_info or net_info commands.
  150.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  151. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  152.  
  153. Format of network debugging information:
  154. Offset    Size    Description
  155.  00h    DWORD    number of interrupts
  156.  04h    DWORD    receive buffer low-water mark
  157.  08h    DWORD    transmit buffer low-water mark
  158.  0Ch    DWORD    number of packets received
  159.  10h    DWORD    number of packets transmitted
  160.  14h    DWORD    total receive errors
  161.  18h    DWORD    total transmit errors
  162.  1Ch  4 BYTEs    ???
  163.  20h    DWORD    receive resets
  164.  24h    DWORD    transmit resets
  165.  28h    DWORD    number of "runts" received
  166.  2Ch    DWORD    number of alignment errors on received packets
  167.  30h    DWORD    number of CRC errors on received packets
  168.  34h    DWORD    number of parity errors on received packets
  169.  38h    DWORD    number of receive overflow errors
  170.  3Ch    DWORD    number of oversized packets received
  171.  40h    DWORD    number of packets lost due to lack of buffers
  172.  44h    DWORD    receive timeouts
  173.  48h 32 BYTEs    ???
  174.  68h    DWORD    number of transmit collisions
  175.  6Ch    DWORD    number of transmit timeouts
  176.  70h    DWORD    number of transmit underflows
  177.  74h    DWORD    number of lost "crs" on transmit
  178.  78h    DWORD    number of times heartbeat failed on transmit
  179.  7Ch 24 BYTEs    ???
  180.  94h    WORD    free packet buffers
  181.  96h    WORD    total packet buffers
  182.  98h    WORD    minimum number of packet buffers free since kernel started
  183.  9Ah 24 BYTEs    ???
  184.  B2h    DWORD    pointer to TCP connection list???
  185.  B6h    DWORD    pointer to IP routing table???
  186.  BAh 30 BYTEs    ???
  187. --------V-610000-----------------------------
  188. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  189.     AX = 0000h
  190.     BX = zoom factor (0-7)
  191. Desc:    zooms the display based on the given zoom factor
  192. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  193.       obtained by calling INT 16/AH=FFh
  194.     not all vendors include the Tseng TSR which supports these functions
  195. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  196. SeeAlso: INT 16/AH=FFh"OPTIMA"
  197. --------N-610001SF0001-----------------------
  198. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  199.     AX = 0001h subfn 0001h
  200.     DS:DX -> communications control block (function 0001h)
  201. Return: AX = status (see below)
  202. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  203.       interrupt handler is identified by the string "BANV" in the four
  204.       bytes immediately preceding the interrupt handler
  205. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  206.  
  207. Values for status:
  208.  0000h    successful
  209.  0001h    service not installed
  210.  0002h    invalid service ID
  211.  0098h    resource already in use
  212.  009Eh    address family does not exist
  213.  009Fh    socket type does not exist
  214.  00A0h    protocol does not exist
  215.  00A1h    no more sockets available
  216.  00A2h    no more buffer space available
  217.  
  218. Format of control block:
  219. Offset    Size    Description
  220.  00h    WORD    0001h
  221.  02h    WORD    pointer to argument block
  222.  04h    WORD    error return code
  223.  06h  4 BYTEs    reserved
  224.  
  225. Format of argument block:
  226. Offset    Size    Description
  227.  00h    WORD    pointer to 2-byte buffer for socket identifier
  228.  02h    WORD    address family
  229.         0003h Banyan
  230.  04h    WORD    socket type
  231.         in address family 0003h
  232.             0001h IPC socket
  233.             0002h SPP socket
  234.  06h    WORD    protocol number
  235.         FFFFh default
  236.  08h    WORD    pointer to 16-byte buffer for socket address
  237.  0Ah    WORD    local port number
  238.         0000h if service should assign transient port number
  239.         0001h to 01FFh well-known port number (assigned by Banyan)
  240.  
  241. Format of IPC port:
  242. Offset    Size    Description
  243.  00h    WORD    address family (always 0003h for Banyan ports)
  244.  04h  4 BYTEs    network number (server's serial number)
  245.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  246.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  247.  0Ah    BYTE    hop count
  248.  0Bh  5 BYTEs    filler
  249. --------N-610001SF0002-----------------------
  250. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  251.     AX = 0001h subfn 0002h
  252.     DS:DX -> communications control block (function 0002h)
  253. Return: AX = status (see below)
  254. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  255.       interrupt handler is identified by the string "BANV" in the four
  256.       bytes immediately preceding the interrupt handler
  257. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  258.  
  259. Values for status:
  260.  0000h    successful
  261.  0001h    service not installed
  262.  0002h    invalid service ID
  263.  0003h-000Ah reserved for BANV interface errors
  264.  0097h    invalid socket identifier
  265.  009Bh    destination node unreachable
  266.  009Ch    message overflow
  267.  009Dh    destination socket nonexistent
  268.  00A2h    no more buffer space
  269.  00A3h    timeout
  270.  00B1h    resource disconnect
  271.  
  272. Format of control block:
  273. Offset    Size    Description
  274.  00h    WORD    0002h
  275.  02h    WORD    pointer to argument block (see below)
  276.  04h    WORD    error return code
  277.         0000h successful
  278.         0097h invalid socket ID
  279.         00A2h no more buffer space
  280.         00A3h timeout event
  281.         00A5h resource not available
  282.         00A6h internal communication failure
  283.         00B1h resource disconnect
  284.  06h  4 BYTEs    reserved
  285.  
  286. Format of argument block:
  287. Offset    Size    Description
  288.  00h    WORD    routine metric
  289.  02h    WORD    error return code
  290.  04h    WORD    socket identifier
  291.  06h    WORD    pointer to send buffer
  292.  08h    WORD    length of send buffer
  293.  0Ah    WORD    flags
  294.         bit 0: async request
  295.         bit 1: reliable message
  296.         bit 3: end of user message received
  297.         bit 4: vectored request (if set, send buffer contains buffer
  298.             descriptors)
  299.         bit 5: connection-specific receive
  300.         bit 6: change to connection-specific receive mode
  301.  0Ch 16 BYTEs    socket address (see below)
  302.  1Ch    WORD    timeout value in multiples of 200ms
  303.  1Eh    WORD    connection identifier
  304.  20h    WORD    type of request
  305.         0001h send message
  306.         0002h establish a virtual connection
  307.         0003h terminate a virtual connection
  308.  
  309. Format of buffer descriptor:
  310. Offset    Size    Description
  311.  00h    WORD    data segment
  312.  02h    WORD    buffer pointer
  313.  04h    WORD    buffer length
  314.  06h    WORD    character count
  315.  
  316. Format of socket address for unreliable datagrams:
  317. Offset    Size    Description
  318.  00h    WORD    0003h      address family
  319.  02h    DWORD    FFFFFFFFh network number
  320.  06h    WORD    FFFFh      subnet number
  321.  08h    WORD          local port number
  322.  0Ah    BYTE    00h-0Fh      hop count
  323.  0Bh  5 BYTEs    0000h      filler
  324. --------N-610001SF0003-----------------------
  325. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  326.     AX = 0001h subfn 0003h
  327.     DS:DX -> communications control block (function 0003h)
  328. Return: AX = status (00-0Ah,97h,A2h,A3h) (see AX=0001h/SF=0002h)
  329. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  330.       interrupt handler is identified by the string "BANV" in the four
  331.       bytes immediately preceding the interrupt handler
  332. SeeAlso: AX=0001h/SF=0002h
  333.  
  334. Format of control block:
  335. Offset    Size    Description
  336.  00h    WORD    0003h
  337.  02h    WORD    pointer to argument block (see below)
  338.  04h    WORD    error return code
  339.         0000h successful
  340.         0097h invalid socket ID
  341.         00A2h no more buffer space
  342.         00A3h timeout event
  343.         00A5h resource not available
  344.         00A6h internal communication failure
  345.         00B1h resource disconnect
  346.  06h  4 BYTEs    reserved
  347.  
  348. Format of argument block:
  349. Offset    Size    Description
  350.  00h    WORD    character count
  351.  02h    WORD    error return code
  352.  04h    WORD    socket identifier
  353.  06h    WORD    pointer to receive buffer
  354.  08h    WORD    length of receive buffer
  355.  0Ah    WORD    flags
  356.         bit 0: async request
  357.         bit 2: flush receive buffer on overflow
  358.         bit 3: end of user message received
  359.         bit 4: vectored request (if set, receive buffer contains buffer
  360.             descriptors)
  361.         bit 5: connection-specific receive
  362.         bit 6: change to connection-specific receive mode
  363.  0Ch 16 BYTEs    socket address
  364.  1Ch    WORD    timeout value in multiples of 200ms
  365.  1Eh    WORD    connection identifier
  366.  20h    WORD    type of response
  367.         0001h message received
  368.         0002h virtual connection established
  369.         0003h virtual connection terminated
  370.  
  371. Format of buffer descriptor:
  372. Offset    Size    Description
  373.  00h    WORD    data segment
  374.  02h    WORD    buffer pointer
  375.  04h    WORD    buffer length
  376.  06h    WORD    character count
  377. --------N-610001SF0004-----------------------
  378. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  379.     AX = 0001h subfn 0004h
  380.     DS:DX -> communications control block (function 0004h)
  381. Return: AX = status (00h-0Ah,97h) (see AX=0001h/SF=0002h)
  382. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  383.       interrupt handler is identified by the string "BANV" in the four
  384.       bytes immediately preceding the interrupt handler
  385. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  386.  
  387. Format of control block:
  388. Offset    Size    Description
  389.  00h    WORD    0004h
  390.  02h    WORD    pointer to argument block (see below)
  391.  04h    WORD    error return code
  392.  06h  4 BYTEs    reserved
  393.  
  394. Format of argument block:
  395. Offset    Size    Description
  396.  00h    WORD    socket identifier
  397. --------N-610001SF0005-----------------------
  398. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  399.     AX = 0001h subfn 0005h
  400.     DS:DX -> communications control block (function 0005h)
  401. Return: AX = status (see below)
  402. Notes:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  403.       interrupt handler is identified by the string "BANV" in the four
  404.       bytes immediately preceding the interrupt handler
  405.     returns results for all asynchronous operations invoked from the
  406.       data segment used for this call
  407. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  408.  
  409. Values for status:
  410.  0000h    successful
  411.  0001h    service not installed
  412.  0002h    invalid service ID
  413.  0003h-000Ah reserved for BANV interface errors
  414.  00A2h    no more buffer space available
  415.  00A3h    timeout event
  416.  
  417. Format of control block:
  418. Offset    Size    Description
  419.  00h    WORD    0005h
  420.  02h    WORD    pointer to argument block (see below)
  421.  04h    WORD    error return code
  422.  06h  4 BYTEs    reserved
  423.  
  424. Format of argument block:
  425. Offset    Size    Description
  426.  00h    WORD    pointer to WORD event pointer
  427.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  428. --------N-610001SF0008-----------------------
  429. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  430.     AX = 0001h subfn 0008h
  431.     DS:DX -> communications control block (function 0008h)
  432. Return: AX = status
  433.         0000h  successful
  434.         00A2h  no more buffer space available
  435. Note:    Banyan can use any interrupt from 60h through 66h (default 61h).  The
  436.       Banyan interrupt handler is identified by the string "BANV" in the
  437.       four bytes immediately preceding the interrupt handler
  438. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  439.  
  440. Format of control block:
  441. Offset    Size    Description
  442.  00h    WORD    0008h
  443.  02h    WORD    process type
  444.         0001h transient process
  445.         0002h resident process
  446.  04h    WORD    error return code
  447.  06h  4 BYTEs    reserved
  448. --------N-610001SF000B-----------------------
  449. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  450.     AX = 0001h subfn 000Bh
  451.     DS:DX -> communications control block (function 000Bh)
  452. Return: AX = status (00h-0Ah,A2h) (see AX=0001h/SF=0005h)
  453. Notes:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  454.       interrupt handler is identified by the string "BANV" in the four
  455.       bytes immediately preceding the interrupt handler
  456.     FAR user function is invoked with SS,DS, and ES set to segment of
  457.       control block, and with the stack containing
  458.         DWORD    return address
  459.         WORD    argument pointer (sosend or sorec argument block)
  460.         WORD    error return code
  461.             0000h argument pointer is valid
  462.             00A3h timeout
  463. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  464.  
  465. Format of control block:
  466. Offset    Size    Description
  467.  00h    WORD    000Bh
  468.  02h    WORD    pointer to argument block (see below)
  469.  04h    WORD    error return code
  470.  06h  2 BYTEs    reserved
  471.  08h    WORD    user CS register
  472.  
  473. Format of argument block:
  474. Offset    Size    Description
  475.  00h    WORD    pointer to user interrupt function
  476.  02h    WORD    pointer to user stack
  477.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  478. --------V-610001-----------------------------
  479. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  480.     AX = 0001h
  481.     BX = X coordinate to center
  482.     CX = Y coordinate to center
  483. Desc:    Positions the zoom window such that the specified window-relative
  484.       coordinates appear as close as possible to the center of the
  485.       display.  Useful for scrolling and panning.
  486. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  487.       obtained by calling INT 16/AH=FFh
  488.     not all vendors include the Tseng TSR which supports these functions
  489. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  490. SeeAlso: INT 16/AH=FFh"OPTIMA"
  491. --------I-610002-----------------------------
  492. INT 61 - Banyan VINES - 3270 INTERFACE
  493.     AX = 0002h
  494.     BH = function
  495.         00h "pi2reset"  reset 3270/SNA or 3270/BSC driver
  496.         02h "pi2bsc" (3270/BSC only)
  497.         03h "pi2get"    get information stored in 3270 resident driver
  498.         04h "pi2put"    store information in 3270 resident driver
  499.         05h "pi2gcur"   get current screen position
  500.         07h "pi2sdat"   send data keystroke
  501.         08h "pi2scom"   send command keystroke
  502.         0Ah "pi2field"  get field info for arbitrary screen positions
  503.         0Fh "pi2stat"   get logical unit/device status
  504.         12h "pi2nlus"   determine logical unit/device assignment
  505.         13h "pi2gate"   specifies comm port address to gateway service
  506.         14h "pi2attach" attach a logical unit/device
  507.         15h "pi2sdev"   save logical unit/device info in resident driver
  508.                 (not supported in >3.0)
  509.         16h "pi2gdev"   get device information (not supported in >3.0)
  510.         17h "pi2luinfo" get info about specific logical unit/device
  511.         18h "pi2gerr"   get finer error detail
  512.         19h "pi2dhold"  (3270/SNA only)  holds a 3270 device
  513.         1Ah "pi2shut"   release memory-resident module
  514.         1Ch "pi2sprof"  save profile info in res driver (not supp in >3.0)
  515.         1Dh "pi2gprof"  get prevsly stored profile info (not supp in >3.0)
  516.     DS:CX -> argument block (except BH=00h,1Ah)
  517. Return: AX = status (see below)
  518. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  519.       which is loaded first.  The other interface will use AX=000Ah
  520.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  521.       or 3270/BSC resident driver, which must be reloaded by the user
  522.  
  523. Values for status:
  524.  0000h    successful
  525.  000Bh    invalid parameter or data does not fit data area
  526.  000Ch    another code path currently active in resident driver
  527.  000Dh    operation currently not allowed
  528.  0032h    encountered connection disconnect error
  529.  0033h    encountered "sosend" completion error
  530.  0034h    encountered "sosend" communication error
  531.  0035h    attach request refused.    extended error info via "pi2gerr":
  532.     01h resource unavailable
  533.     02h invalid type
  534.     03h version mismatch
  535.     04h invalid logical unit number
  536.     05h error during ARL processing
  537.     06h no access for user
  538.  0071h    encountered "sosock" error
  539.  0072h    encountered unrecognizable error
  540.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  541.  0074h    encountered invalid type-of-request on "sowait"
  542.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  543.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  544.  0077h    encountered connection request
  545.  0078h    encountered unrecognizable data
  546.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  547.  
  548. Format of argument block for BH=03h,04h:
  549. Offset    Size    Description
  550.  00h    WORD    size of data area (max 256)
  551.  02h  N BYTEs    data area
  552.  
  553. Format of argument block for BH=05h:
  554. Offset    Size    Description
  555.  00h    WORD    logical unit/device number
  556.  02h    WORD    pointer to WORD buffer for cursor index
  557.  04h    WORD    pointer to BYTE buffer for current field attribute
  558.  
  559. Format of argument block for BH=07h:
  560. Offset    Size    Description
  561.  00h    WORD    logical unit/device number
  562.  02h    WORD    ASCII data byte
  563.  04h    WORD    pointer to WORD count of characters which will need updating
  564.  
  565. Format of argument block for BH=08h:
  566. Offset    Size    Description
  567.  00h    WORD    logical unit/device number
  568.  02h    WORD    keystroke
  569.         0000h Enter
  570.         0001h Clear
  571.         0002h PA1
  572.         0003h PA2
  573.         0004h PA3
  574.         0005h PF1
  575.         ...
  576.         001Ch PF24
  577.         001Dh CSELECT (cursor select)
  578.         001Eh Insert
  579.         001Fh Delete
  580.         0020h EOField
  581.         0021h EINPUT (erase input)
  582.         0022h Reset
  583.         0023h Attention
  584.         0024h SysReq
  585.         0025h Duplicate
  586.         0026h Fieldmark
  587.         0027h Home
  588.         0028h NextLine
  589.         0029h Tab
  590.         002Ah BackTab
  591.         002Bh cursor up
  592.         002Ch cursor down
  593.         002Dh cursor right
  594.         002Eh cursor left
  595.         002Fh double cursor right
  596.         0030h double cursor left
  597.         0031h PRINT
  598.         0032h CANCEL
  599.         0033h Backspace
  600.  
  601. Format of argument block for BH=0Ah:
  602. Offset    Size    Description
  603.  00h    WORD    logical unit/device number
  604.  02h    WORD    screen index
  605.  04h    WORD    pointer to WORD buffer for field length
  606.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  607.  
  608. Format of argument block for BH=0Fh:
  609. Offset    Size    Description
  610.  00h    WORD    logical unit/device number
  611.  02h    WORD    clear mask (clear these bits of status after returning status)
  612.  04h    WORD    pointer to WORD buffer for device status (see below)
  613.  
  614. Bitfields for device status:
  615. Bit(s)    Description
  616.  10    status modified
  617.  9    buffer modified
  618.  8    set cursor
  619.  5    sound alarm
  620.  1-0    size of print line for printer logical units
  621.     00  unformatted line
  622.     01  40-character line
  623.     10  64-character line
  624.     11  80-character line
  625.  
  626. Format of argument block for BH=12h:
  627. Offset    Size    Description
  628.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  629.  02h    WORD    pointer to WORD buffer for version number
  630.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  631.  
  632. Format of argument block for BH=13h:
  633. Offset    Size    Description
  634.  00h 16 BYTEs    communications port address (see AX=0001h"Sosock")
  635.  
  636. Format of argument block for BH=14h:
  637. Offset    Size    Description
  638.  00h    WORD    logical unit/device number
  639.         0000h attach any free device of the specified type
  640.  02h    WORD    logical unit/device type
  641.         (3270/SNA) 01h, 02h, or 03h
  642.         (3270/BSC) 02h display
  643.         (3270/BSC) 03h printer
  644.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  645.  
  646. Format of argument block for BH=16h:
  647. Offset    Size    Description
  648.  00h    WORD    pointer to 18-byte buffer for device block (see below)
  649.         first WORD must be set to desired logical unit/device number
  650.  
  651. Format of argument block for BH=17h:
  652. Offset    Size    Description
  653.  00h    WORD    logical unit/device number
  654.  02h    WORD    pointer to information block in caller's DS (see below)
  655.  
  656. Format of argument block for BH=18h:
  657. Offset    Size    Description
  658.  00h    WORD    pointer to WORD buffer for major error code
  659.  02h    WORD    pointer to WORD buffer for minor error code
  660.  
  661. Format of argument block for BH=19h:
  662. Offset    Size    Description
  663.  00h    WORD    logical unit/device number
  664.  
  665. Format of argument block for BH=1Ch,1Dh:
  666. Offset    Size    Description
  667.  00h    WORD    pointer to profile block in caller's DS (see below)
  668.  
  669. Format of device block, argument block for BH=15h:
  670. Offset    Size    Description
  671.  00h    WORD    logical unit/device number
  672.  02h    WORD    logical unit/device type
  673.  04h    WORD    display model number
  674.  06h    WORD    numeric checking
  675.  08h    WORD    status line
  676.  0Ah    BYTE    unprotected normal field attribute
  677.  0Bh    BYTE    unprotected intensified field attribute
  678.  0Ch    BYTE    protected normal field attribute
  679.  0Dh    BYTE    protected intensified field attribute
  680.  0Eh    WORD    reserved
  681.  10h    WORD    printer port number
  682.  
  683. Format of information block:
  684. Offset    Size    Description
  685.  00h    WORD    device model number
  686.  02h    DWORD    screen buffer pointer
  687.  06h    DWORD    status line pointer (see below)
  688.  0Ah    DWORD    reserved
  689.  
  690. Format of status line:
  691. Offset    Size    Description
  692.  00h    BYTE    comm line status
  693.         00h inactive
  694.         01h active
  695.  01h    BYTE    activation level
  696.         01h physical unit activated
  697.         02h logical unit also activated
  698.         03h session is bound
  699.  02h    BYTE    data traffic state
  700.         00h inactive
  701.         01h active
  702.  03h    BYTE    screen ownership
  703.         00h SLU->PLU sessoin owns screen
  704.         01h SLU->SSCP session owns screen
  705.  04h    BYTE    keyboard status (see below)
  706.  05h    BYTE    insert mode
  707.         01h if in insert mode
  708.  06h    BYTE    numeric
  709.         01h if current screen buffer is numeric only
  710.  07h    BYTE    printer status
  711.         00h printer not assigned
  712.         01h printer is inactive
  713.         02h printer error
  714.         03h currently printing
  715.         04h printer is busy
  716.         05h printer is very busy
  717.  08h    BYTE    printer assignment
  718.  09h    BYTE    maximum size of network name
  719.  0Ah  N BYTEs    ASCIZ network name
  720.     BYTE    maximum size of message window
  721.       M BYTEs    null-terminated message window
  722.     BYTE    code set
  723.         00h EBCDIC
  724.         01h ASCII
  725.       M BYTEs    extended attributes
  726.         01h extended attributes are in effect (stored at screen+1920)
  727.             each extended attribute specifies
  728.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  729.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  730.                   100=green,101=turquoise,110=yellow,111=white
  731.     BYTE    extended color
  732.         01h other than base color is in effect
  733.  
  734. Values for keyboard status:
  735.  00h    UNLOCK - ready to accept data
  736.  01h    TIME - aid was struck
  737.  02h    SYSTEM - received response no restore
  738.  03h    FUNCTION - unavailable keyboard function
  739.  04h    INPUT - not currently used
  740.  05h    ENDFIELD - field filled in insert mode
  741.  06h    PROTECTED - attempt to enter in protected field
  742.  07h    NUMERIC - attempt to enter in numeric field
  743.  08h    PROGRAM - error in outbound data stream
  744.  
  745. Format of profile block:
  746. Offset    Size    Description
  747.  00h 64 BYTEs    gateway service name
  748.  40h 16 BYTEs    gateway comm port address
  749.  50h    WORD    primary logical unit number
  750.  52h    WORD    secondary logical unit type
  751.  54h    WORD    secondary logical unit number
  752.  56h    WORD    printer assignment
  753.  58h 50 BYTEs    keyboard definitions filename
  754. --------V-610002-----------------------------
  755. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  756.     AX = 0002h
  757. Desc:    switches off zoom and returns window to its original state
  758. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  759.       obtained by calling INT 16/AH=FFh
  760.     not all vendors include the Tseng TSR which supports these functions
  761. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  762. --------N-610003SF00-------------------------
  763. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  764.     AX = 0003h subfn 00h
  765.     DS:BX -> argument block (see below)
  766. Return: AX = status (see below)
  767. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  768.  
  769. Values for status:
  770.  0000h    successful
  771.  000Bh    invalid session ID
  772.  000Ch    session not active
  773.  000Dh    invalid request type
  774.  000Eh    invalid parameters
  775.  000Fh    out of heap space
  776.  0010h    timeout on send
  777.  0011h    Banyan communications error
  778.  0012h    session not waiting for host
  779.  0013h    session is active
  780.  0014h    duplicate suspend session request
  781.  0015h    no session suspended
  782.  0016h    ring data buffer full
  783.  0017h    printer error encountered
  784.  0018h    Banyan communications error
  785.  0019h    unable to make connection
  786.  001Ah    no ring buffer specified at startup
  787.  001Bh    service is down
  788.  001Ch    invalid service name
  789.  001Dh    service is closed
  790.  001Eh    invalid connection name
  791.  001Fh    max session limit reached for service
  792.  0020h    access rights list for connection/dialout does not include this user
  793.  0021h    service not responding
  794.  0022h    missing telephone number
  795.  
  796. Format of argument block:
  797. Offset    Size    Description
  798.  00h    BYTE    session ID (00h)
  799.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  800.  02h    WORD    -> user buffer ptr info area in caller's current DS (see below)
  801.  
  802. Format of user buffer ptr info area:
  803. Offset    Size    Description
  804.  00h    WORD    flags
  805.         0000h don't read interface's data buffer
  806.         0001h read data buffer
  807.  02h    DWORD    pointer to ring buffer
  808.  06h    WORD    length of ring buffer
  809.  08h    WORD    ring buffer offset to last byte read by caller
  810.  0Ah    DWORD    pointer to WORD containing offset of last byte
  811.           in ring buffer filled
  812.  0Eh    DWORD    pointer to screen buffer
  813.  12h    DWORD    pointer to field containing cursor position
  814.  16h    DWORD    pointer to terminal status area (see below)
  815.  
  816. Format of terminal status area:
  817. Offset    Size    Description
  818.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  819.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  820.  02h    BYTE    current keypad mode (VT100,VT52 only)
  821.         4Eh ("N") numeric mode
  822.         41h ("A") application mode
  823.  03h  4 BYTEs    current state of LEDs (VT100 only)
  824.         00h off
  825.         01h on
  826.  07h    WORD    line error count
  827.  09h    WORD    primary error code (see below)
  828.  0Bh    WORD    secondary error code
  829.  
  830. Values for primary error code:
  831.  0000h    no error
  832.  0001h    unable to make connection
  833.  0002h    communications error, restart session
  834.  0003h    async terminal emulation service unavailable
  835.  0004h    lost carrier
  836.  0005h    all matching lines busy
  837.  0006h    no lines defined for connection name
  838.  0007h    no dial lines available on server
  839.  0008h    no matching dial lines available
  840.  0009h    out of heap space
  841.  000Ah    service error encountered
  842.  000Bh    timed out waiting to connect
  843.  000Ch    communications error
  844.  000Dh    communications error
  845.  000Eh    host wants file transferred to/from PC
  846.  000Fh    host software changed session parameter
  847.  0010h    host software changed tap settings
  848.  0011h    host software changed LED indicator
  849.  0012h    host software changed display background (secondary error code 00h for
  850.       white on black, 01h for black on white)
  851.  0013h    host software changed display option (secondary error code 00h for off,
  852.       01h for on)
  853.  0014h    communications error
  854.  0015h    communications error
  855.  0016h    unable to make connection
  856.  0017h    unable to make connection
  857. --------N-610003SF01-------------------------
  858. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  859.     AX = 0003h subfn 01h
  860.     DS:BX -> argument block (see below)
  861. Return: AX = status (see AX=0003h/SF=00h)
  862. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  863.  
  864. Format of argument block:
  865. Offset    Size    Description
  866.  00h    BYTE    session ID (00h)
  867.  01h    BYTE    01h (function "send to host")
  868.  02h    BYTE    type
  869.         00h ASCII byte
  870.         01h ASCII string
  871.         02h terminal function code
  872.         03h up arrow
  873.         04h down arrow
  874.         05h left arrow
  875.         06h right arrow
  876.         07h break
  877.  03h  N BYTEs    type-specific info (see below)
  878.  
  879. Format of type-specific info:
  880. Offset    Size    Description
  881. ---ASCII byte---
  882.  03h    BYTE    byte to send to host
  883. ---ASCII string---
  884.  03h    WORD    length of string
  885.  05h    WORD    pointer to string
  886. ---terminal function code (VT52/VT100)---
  887.  03h    BYTE    function code
  888.         00h keypad 0
  889.         01h keypad 1
  890.         ...
  891.         09h keypad 9
  892.         0Ah keypad -
  893.         0Bh keypad ,
  894.         0Ch keypad .
  895.         0Dh keypad ENTER
  896.         0Eh PF1
  897.         0Fh PF2
  898.         10h PF3
  899.         11h PF4
  900. ---terminal function code (IBM3101)---
  901.  03h    BYTE    function code
  902.         00h PF1
  903.         ...
  904.         07h PF8
  905.         08h Home
  906. --------N-610003SF02-------------------------
  907. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  908.     AX = 0003h subfn 02h
  909.     DS:BX -> argument block (see below)
  910. Return: AX = status (see AX=0003h/SF=00h)
  911. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  912.  
  913. Format of argument block:
  914. Offset    Size    Description
  915.  00h    BYTE    session ID (00h)
  916.  01h    BYTE    02h (function "control monitor")
  917.  02h    BYTE    display flag
  918.         00h don't display data received from host
  919.         01h display data
  920. --------N-610003SF03-------------------------
  921. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  922.     AX = 0003h subfn 03h
  923.     DS:BX -> argument block (see below)
  924. Return: AX = status (see AX=0003h/SF=00h)
  925. Desc:    this function permits the caller to freeze/unfreeze the display and
  926.       the ring buffer
  927. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  928.  
  929. Format of argument block:
  930. Offset    Size    Description
  931.  00h    BYTE    session ID (00h)
  932.  01h    BYTE    03h (function "flow control data")
  933.  02h    BYTE    flow control flag
  934.         00h allow characters to be put into display or ring buffer
  935.         01h don't place any more characters into display or ring buffer
  936. --------N-610003SF04-------------------------
  937. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  938.     AX = 0003h subfn 04h
  939.     DS:BX -> argument block (see below)
  940. Return: AX = status (see AX=0003h/SF=00h)
  941. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  942.  
  943. Format of argument block:
  944. Offset    Size    Description
  945.  00h    BYTE    session ID (00h)
  946.  01h    BYTE    04h (function "end active session")
  947. --------N-610003SF05-------------------------
  948. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  949.     AX = 0003h subfn 05h
  950.     DS:BX -> argument block (see below)
  951. Return: AX = status (see AX=0003h/SF=00h)
  952. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  953.  
  954. Format of argument block:
  955. Offset    Size    Description
  956.  00h    BYTE    session ID (00h)
  957.  01h    BYTE    05h (function "set session parameter")
  958.  02h    BYTE    parameter number (see below)
  959.  03h    BYTE    new parameter value
  960.  
  961. Values for parameter number:
  962.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  963.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  964.  01h    parity (00h=none, 01h=odd, 02h=even)
  965.  02h    duplex (00h=full, 01h=half)
  966.  03h    character size (00h=7 bits, 01h=8 bits)
  967.  04h    stop bits (00h=1, 01h=2)
  968.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  969.  07h    intercharacter delay in tenths of a second
  970.  08h    interline delay in tenths of a second
  971.  09h    auto linefeed (00h=no, 01h=yes)
  972.  0Ah    filter control characters (00h=no, 01h=yes)
  973.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  974.  0Ch    auto wrap (00h=no, 01h=yes)
  975.  0Dh    cursor shape (00h=underscore, 01h=block)
  976.  0Eh    character set (00h=UK, 01h=US ASCII)
  977.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  978. --------N-610003SF06-------------------------
  979. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  980.     AX = 0003h subfn 06h
  981.     DS:BX -> argument block (see below)
  982. Return: AX = status (see AX=0003h/SF=00h)
  983. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  984.  
  985. Format of argument block:
  986. Offset    Size    Description
  987.  00h    BYTE    session ID (00h)
  988.  01h    BYTE    06h (function "get session parameter")
  989.  02h    BYTE    parameter number (see AX=0003h/SF=05h)
  990.  03h    BYTE    (return) current parameter value
  991. --------N-610003SF07-------------------------
  992. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  993.     AX = 0003h subfn 07h
  994.     DS:BX -> argument block (see below)
  995. Return: AX = status (see AX=0003h/SF=00h)
  996. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  997.  
  998. Format of argument block:
  999. Offset    Size    Description
  1000.  00h    BYTE    session ID (00h)
  1001.  01h    BYTE    07h (function "set tab settings")
  1002.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1003.           each byte = 00h if no tab, 01h if tab at that position
  1004. --------N-610003SF08-------------------------
  1005. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  1006.     AX = 0003h subfn 08h
  1007.     DS:BX -> argument block (see below)
  1008. Return: AX = status (see AX=0003h/SF=00h)
  1009. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  1010.  
  1011. Format of argument block:
  1012. Offset    Size    Description
  1013.  00h    BYTE    session ID (00h)
  1014.  01h    BYTE    08h (function "get tab settings")
  1015.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1016.         each byte set to 00h if no tab, 01h if tab at that position
  1017. --------N-610003SF09-------------------------
  1018. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  1019.     AX = 0003h subfn 09h
  1020.     DS:BX -> argument block (see below)
  1021. Return: AX = status (see AX=0003h/SF=00h)
  1022. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  1023.  
  1024. Format of argument block:
  1025. Offset    Size    Description
  1026.  00h    BYTE    session ID (00h)
  1027.  01h    BYTE    09h (function "refresh emulation screen")
  1028. --------N-610003SF0A-------------------------
  1029. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  1030.     AX = 0003h subfn 0Ah
  1031.     DS:BX -> argument block (see below)
  1032. Return: AX = status (see AX=0003h/SF=00h)
  1033. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  1034.  
  1035. Format of argument block:
  1036. Offset    Size    Description
  1037.  00h    BYTE    session ID (00h)
  1038.  01h    BYTE    0Ah (function "suspend session temporarily")
  1039.  02h    WORD    size of session information to be saved
  1040.  04h    WORD    pointer to buffer in caller's DS
  1041. --------N-610003SF0B-------------------------
  1042. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  1043.     AX = 0003h subfn 0Bh
  1044.     DS:BX -> argument block (see below)
  1045. Return: AX = status (see AX=0003h/SF=00h)
  1046. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  1047.  
  1048. Format of argument block:
  1049. Offset    Size    Description
  1050.  00h    BYTE    session ID (00h)
  1051.  01h    BYTE    0Bh (function "restore previously suspended session")
  1052.  02h    WORD    size of buffer into which session info is restored
  1053.  04h    WORD    pointer to buffer in caller's DS
  1054. --------N-610003SF0C-------------------------
  1055. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  1056.     AX = 0003h subfn 0Ch
  1057.     DS:BX -> argument block (see below)
  1058. Return: AX = status (see AX=0003h/SF=00h)
  1059. SeeAlso: AX=0003h/SF=00h
  1060.  
  1061. Format of argument block:
  1062. Offset    Size    Description
  1063.  00h    BYTE    session ID (00h)
  1064.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  1065.  02h    BYTE    check_scroll_lock flag
  1066.         00h off
  1067.         01h on (display of host data stopped while ScrollLock on)
  1068. --------N-610003SF0D-------------------------
  1069. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  1070.     AX = 0003h subfn 0Dh
  1071.     DS:BX -> argument block (see below)
  1072. Return: AX = status (see AX=0003h/SF=00h)
  1073. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  1074.  
  1075. Format of argument block:
  1076. Offset    Size    Description
  1077.  00h    BYTE    session ID (00h)
  1078.  01h    BYTE    0Dh (function "exit emulation")
  1079. --------N-610003SF0E-------------------------
  1080. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  1081.     AX = 0003h subfn 0Eh
  1082.     DS:BX -> argument block (see below)
  1083. Return: AX = status (see AX=0003h/SF=00h)
  1084. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  1085.  
  1086. Format of argument block:
  1087. Offset    Size    Description
  1088.  00h    BYTE    session ID (00h)
  1089.  01h    BYTE    0Eh (function "interrupt on character from host")
  1090.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1091.  06h    DWORD    stack pointer to use when call is made
  1092. --------N-610003SF0F-------------------------
  1093. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  1094.     AX = 0003h subfn 0Fh
  1095.     DS:BX -> argument block (see below)
  1096. Return: AX = status (see AX=0003h/SF=00h)
  1097. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  1098.  
  1099. Format of argument block:
  1100. Offset    Size    Description
  1101.  00h    BYTE    session ID (00h)
  1102.  01h    BYTE    0Fh (function "start a session")
  1103.  02h    WORD    pointer to information area in caller's current DS (see below)
  1104.  
  1105. Format of information area:
  1106. Offset    Size    Description
  1107.  00h    WORD    length of service name
  1108.  02h    WORD    pointer to service name in caller's DS
  1109.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  1110.  05h    WORD    length of connection name/telephone number
  1111.  07h    WORD    pointer to connection name/telephone number
  1112. --------N-610003SF10-------------------------
  1113. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  1114.     AX = 0003h subfn 10h
  1115.     DS:BX -> argument block (see below)
  1116. Return: AX = status (see AX=0003h/SF=00h)
  1117. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  1118.  
  1119. Format of argument block:
  1120. Offset    Size    Description
  1121.  00h    BYTE    session ID (00h)
  1122.  01h    BYTE    10h (function "start/stop printing of data received from host)
  1123.  02h    WORD    print capture flag (00h=off, 01h=on)
  1124. --------N-610003SF11-------------------------
  1125. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  1126.     AX = 0003h subfn 11h
  1127.     DS:BX -> argument block (see below)
  1128. Return: AX = status (see AX=0003h/SF=00h)
  1129. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1130.  
  1131. Format of argument block:
  1132. Offset    Size    Description
  1133.  00h    BYTE    session ID (00h)
  1134.  01h    BYTE    11h (function "get file transfer parameters")
  1135.  02h    WORD    pointer to info area in caller's current DS (see below)
  1136.  
  1137. Format of info area:
  1138. Offset    Size    Description
  1139.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  1140.  01h    BYTE    direction flag (00h send, 01h receive)
  1141.  02h    BYTE    length of null-terminated PC filename
  1142.  03h    DWORD    pointer to null-terminated PC filename
  1143.  07h    BYTE    length of null-terminated host filename
  1144.  08h    DWORD    pointer to null-terminated host filename
  1145. --------N-610003SF12-------------------------
  1146. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  1147.     AX = 0003h subfn 12h
  1148.     DS:BX -> argument block (see below)
  1149. Return: AX = status (see AX=0003h/SF=00h)
  1150. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  1151.  
  1152. Format of argument block:
  1153. Offset    Size    Description
  1154.  00h    BYTE    session ID (00h)
  1155.  01h    BYTE    12h (function "get connection information")
  1156.  02h    WORD    offset of buffer for connection information (see below)
  1157.  
  1158. Format of connection information:
  1159. Offset    Size    Description
  1160.  00h    WORD    length of service name (returned)
  1161.  02h    WORD    pointer to 64-byte buffer for service name
  1162.  04h    BYTE    type of connection
  1163.         00h connection name
  1164.         01h dialout
  1165.  05h    WORD    length of connection name/telephone number
  1166.  07h    WORD    pointer to 64-byte buffer for name/telno
  1167.  09h    BYTE    server line number being used (returned)
  1168. --------N-610003SF13-------------------------
  1169. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  1170.     AX = 0003h subfn 13h
  1171.     DS:BX -> argument block (see below)
  1172. Return: AX = status (see AX=0003h/SF=00h)
  1173. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  1174.  
  1175. Format of argument block:
  1176. Offset    Size    Description
  1177.  00h    BYTE    session ID (00h)
  1178.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  1179.  02h    BYTE    trace flag (00h=off, 01h=on)
  1180. --------N-610003SF14-------------------------
  1181. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  1182.     AX = 0003h subfn 14h
  1183.     DS:BX -> argument block (see below)
  1184. Return: AX = status (see AX=0003h/SF=00h)
  1185. SeeAlso: AX=0003h/SF=0Eh
  1186.  
  1187. Format of argument block:
  1188. Offset    Size    Description
  1189.  00h    BYTE    session ID (00h)
  1190.  01h    BYTE    14h (function "interrupt on message from host")
  1191.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1192.  06h    DWORD    stack pointer to use when call is made
  1193. --------N-610003SF15-------------------------
  1194. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  1195.     AX = 0003h subfn 15h
  1196.     DS:BX -> argument block (see below)
  1197. Return: AX = status (see AX=0003h/SF=00h)
  1198. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1199.  
  1200. Format of argument block:
  1201. Offset    Size    Description
  1202.  00h    BYTE    session ID (00h)
  1203.  01h    BYTE    15h (function "reset error")
  1204. --------V-610003-----------------------------
  1205. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  1206.     AX = 0003h
  1207. Return: AX = zoom factor
  1208. Desc:    returns the current zoom factor
  1209. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  1210.       obtained by calling INT 16/AH=FFh
  1211.     not all vendors include the Tseng TSR which supports these functions
  1212. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1213. --------N-610004-----------------------------
  1214. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1215.     AX = 0004h
  1216.     DS:DX -> request block (function 0008h)
  1217. Return: AX = status
  1218.         0000h server ID returned in request block
  1219.         000Fh invalid drive
  1220.         0015h drive not ready
  1221.  
  1222. Format of request block:
  1223. Offset    Size    Description
  1224.  00h    WORD    0008h
  1225.  02h    WORD    drive number (0=default, 1=A, ...)
  1226.  04h  6 BYTEs    buffer for server ID
  1227. --------V-610004-----------------------------
  1228. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  1229.     AX = 0004h
  1230. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  1231.       panning and zooming via the numeric keypad.
  1232.     INT 61 is the default interrupt; the actual interrupt number can be
  1233.       obtained by calling INT 16/AH=FFh
  1234.     not all vendors include the Tseng TSR which supports these functions
  1235. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1236. --------N-610005-----------------------------
  1237. INT 61 - Banyan VINES - PRINTER CONTROL
  1238.     AX = 0005h
  1239.     DS:DX -> request block
  1240. Return: AX = status
  1241.         0000h successful
  1242.         0001h network software not installed or incompatible
  1243. SeeAlso: INT 2F/AX=D702h
  1244.  
  1245. Format of request block:
  1246. Offset    Size    Description
  1247.  00h    WORD    function
  1248.         0201h "endspool" all data for a print job has been sent
  1249.         0205h "getactive" get currently active printer port
  1250.  02h    WORD    number of active port (1-3)
  1251.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1252.  06h    WORD    0000h
  1253. --------V-610005-----------------------------
  1254. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  1255.     AX = 0005h
  1256.     BX:CX -> buffer for window parameters (see below)
  1257. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1258.       obtained by calling INT 16/AH=FFh
  1259.     not all vendors include the Tseng TSR which supports these functions
  1260. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  1261. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1262.  
  1263. Format of window parameters:
  1264. Offset    Size    Description
  1265.  00h    WORD    X start of zoom window
  1266.  02h    WORD    Y start of zoom window
  1267.  04h    WORD    X end of zoom window
  1268.  06h    WORD    Y end of zoom window
  1269.  08h    WORD    current zoom factor
  1270.  0Ah    WORD    zoom offset start X
  1271.  0Ch    WORD    zoom offset start Y
  1272. --------V-610006-----------------------------
  1273. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  1274.     AX = 0006h
  1275.     BX:CX -> zoom window description (see below)
  1276. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  1277.       factor
  1278.     INT 61 is the default interrupt; the actual interrupt number can be
  1279.       obtained by calling INT 16/AH=FFh
  1280.     not all vendors include the Tseng TSR which supports these functions
  1281. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  1282. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1283.  
  1284. Format of zoom window description:
  1285. Offset    Size    Description
  1286.  00h    WORD    X start of zoom window
  1287.  02h    WORD    Y start of zoom window
  1288.  04h    WORD    X end of zoom window
  1289.  06h    WORD    Y end of zoom window
  1290. --------V-610007-----------------------------
  1291. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  1292.     AX = 0007h
  1293. Return: AX = current state (0000h/0001h)
  1294. Desc:    returns the current toggle state of the application (END) key in
  1295.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  1296.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  1297. Notes:    In specify mode, the END key has been reserved for applications.
  1298.     INT 61 is the default interrupt; the actual interrupt number can be
  1299.       obtained by calling INT 16/AH=FFh
  1300.     not all vendors include the Tseng TSR which supports these functions
  1301. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  1302. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
  1303. --------N-610007BX0002-----------------------
  1304. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1305.     AX = 0007h
  1306.     BX = 0002h
  1307.     DS:DX -> StreetTalk service name
  1308.     DS:DI -> port record block (see below)
  1309. Return: AX = status (see below)
  1310. SeeAlso: AX=0007h/BX=0004h
  1311.  
  1312. Values for status:
  1313.  0000h    successful
  1314.  0001h    PC network software not installed or incompatible
  1315.  03E9h    incorrect name syntax
  1316.  03EAh    organization name too long
  1317.  03EBh    group name too long
  1318.  03ECh    item name too long
  1319.  03EDh    StreetTalk name too long
  1320.  03F3h    organization not found
  1321.  03F4h    group not found
  1322.  03F5h    StreetTalk name not found
  1323.  03F8h    not a StreetTalk name
  1324.  0409h    modify access denied
  1325.  040Dh    appropriate StreetTalk name unavailable
  1326.  
  1327. Format of port record block:
  1328. Offset    Size    Description
  1329.  00h    WORD    number of 17-byte elements
  1330.  02h 17 BYTEs    element (byte 00h = input port type, bytes 01h-10h = port)
  1331.         (see AX=0001h"Sosock" for port format)
  1332. --------N-610007BX0004-----------------------
  1333. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1334.     AX = 0007h
  1335.     BX = 0004h
  1336.     DS:DX -> StreetTalk name of service
  1337.     DS:DI -> port record block (see below)
  1338. Return: AX = status (see AX=0007h/BX=0002h)
  1339. SeeAlso: AX=0007h/BX=0002h
  1340.  
  1341. Format of port record block:
  1342. Offset    Size    Description
  1343.  00h    WORD    number of 17-byte elements
  1344.  02h 17 BYTEs    element: byte 00h = input port type, 01h-10h = port
  1345.         (see AX=0001h"Sosock" for port format)
  1346. --------N-610007BX0005-----------------------
  1347. INT 61 - Banyan VINES - GET USER NAME
  1348.     AX = 0007h
  1349.     BX = 0005h
  1350.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1351. Return: AX = status
  1352.         0000h successful
  1353.         0001h network software not installed or incompatible
  1354. Note:    if no user logged in, first byte of returned name will be 00h
  1355. SeeAlso: AX=0007h/BX=0007h
  1356. --------N-610007BX0006-----------------------
  1357. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1358.     AX = 0007h
  1359.     BX = 0006h
  1360.     SI = error code (>100)
  1361.     DS:DX -> 80-byte buffer for error text
  1362. Return: AX = status
  1363.         0000h successful
  1364.         0001h network software not installed or incompatible
  1365. --------N-610007BX0007-----------------------
  1366. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1367.     AX = 0007h
  1368.     BX = 0007h
  1369.     DS:DX -> NiceName block (see below)
  1370. Return: AX = status (see AX=0007h/BX=0002h)
  1371. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  1372.  
  1373. Format of NiceName block:
  1374. Offset    Size    Description
  1375.  00h    WORD    type of name
  1376.         0064h organization
  1377.         00C8h group
  1378.         012Ch item
  1379.  02h    WORD    pointer to ASCIZ input name
  1380.  04h    WORD    pointer to 64-byte buffer for output name
  1381. --------N-610007BX0008-----------------------
  1382. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1383.     AX = 0007h
  1384.     BX = 0008h
  1385.     DS:DX -> enumerate block (see below)
  1386. Return: AX = status
  1387.         0000h successful
  1388.         0411h all matching names have been returned
  1389.         0412h some groups unavailable, all available matches returned
  1390. Note:    each program using this call should continue until a nonzero status
  1391.       is returned; otherwise, some resources will not be freed for several
  1392.       hours
  1393. SeeAlso: AX=0007h/BX=0007h
  1394.  
  1395. Format of enumerate block:
  1396. Offset    Size    Description
  1397.  00h    WORD    return code
  1398.  02h    WORD    pointer to pattern string
  1399.  04h    WORD    enumerate type
  1400.         0064h organization
  1401.         00C8h group
  1402.         012Ch item
  1403.  06h    WORD    enumerate class
  1404.         0000h unspecified (return all matching items)
  1405.         0001h user names
  1406.         0002h service names
  1407.         0003h list names
  1408.         0004h nicknames
  1409.  08h    WORD    pointer to category criteria block (see below) or 0
  1410.  0Ah    WORD    pointer to array of 64-byte returned names
  1411.  0Ch    WORD    number of names returned
  1412.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  1413.           call)
  1414.  
  1415. Format of category criteria block:
  1416. Offset    Size    Description
  1417.  00h    WORD    exclude flag
  1418.         0000h return only items with the specified categories
  1419.         0001h return all items except those with the given categories
  1420.  02h    WORD    number of categories
  1421.  04h    WORD    category 1 value
  1422.  06h    WORD    category 2 value
  1423.         ...
  1424.  
  1425. Values for common service categories:
  1426.  0002h    file service
  1427.  0003h    print service
  1428.  0004h    mail service
  1429.  0005h    StreetTalk
  1430.  0006h    time service
  1431.  0008h    semaphore service
  1432.  0009h    3270/SNA service
  1433.  000Ah    asynchronous terminal emulation service
  1434.  000Ch    NETBIOS service
  1435.  000Dh    PC-based service
  1436. --------V-610008-----------------------------
  1437. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  1438.     AX = 0008h
  1439.     BX = X start of zoom offset
  1440.     CX = Y start of zoom offset
  1441. Desc:    specifies the first byte of video memory to appear in the zoom window
  1442. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1443.       obtained by calling INT 16/AH=FFh
  1444.     not all vendors include the Tseng TSR which supports these functions
  1445. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1446. --------N-610008BX0002-----------------------
  1447. INT 61 - Banyan VINES - POST MESSAGE ON LOCAL DISPLAY
  1448.     AX = 0008h
  1449.     BX = 0002h
  1450.     CX = flags
  1451.         bit 0: message will remain on screen until user presses ^X
  1452.         bit 1: ring bell after displaying message
  1453.         bit 2: blink
  1454.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  1455. Return: AX = status
  1456.         0000h successful
  1457.         000Bh message display function currently busy
  1458.         000Ch message queue full
  1459. Note:    queues up to three messages to be displayed on the bottom line
  1460. SeeAlso: AX=0008h/BX=0003h
  1461. --------N-610008BX0003-----------------------
  1462. INT 61 - Banyan VINES - INTERCEPT VINES 25th-LINE MESSAGES AT LOCAL PC
  1463.     AX = 0008h
  1464.     BX = 0003h
  1465.     DS:DX -> request block
  1466. Return: AX = status
  1467.         0000h successful
  1468.         0001h network software not installed or incompatible
  1469. Notes:    message handler should not call BIOS or DOS functions, and should
  1470.       either call next handler or simply return
  1471.     to stop intercepting messages, set prev and next request blocks to
  1472.       point at each other
  1473. SeeAlso: AX=0008h/BX=0002h
  1474.  
  1475. Format of request block:
  1476. Offset    Size    Description
  1477.  00h    DWORD    pointer to user-written message handler
  1478.  04h    DWORD    pointer to next request block (filled in by VINES)
  1479.  08h    DWORD    pointer to previous request block (filled in by VINES)
  1480.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see below)
  1481.  
  1482. Format of message storage area:
  1483. Offset    Size    Description
  1484.  00h 16 BYTEs    IPC port of message sender (see AX=0001h"Sosock")
  1485.  10h    BYTE    message flags
  1486.  11h    WORD    reserved
  1487.  13h    BYTE    length of message
  1488.  14h 80 BYTEs    message text
  1489. --------N-61000A-----------------------------
  1490. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  1491.     AX = 000Ah
  1492. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  1493.       which is loaded second.  The first interface loaded will use AX=0002h
  1494. SeeAlso: INT 61/AX=0002h
  1495. --------N-6101-------------------------------
  1496. INT 61 - Banyan VINES - CHECK SERVICE
  1497.     AH = 01h
  1498.     AL = service ID (see below)
  1499. Return: AX = status
  1500.         0000h installed
  1501.         0001h not installed
  1502.         0002h invalid ID
  1503.  
  1504. Values for service ID:
  1505.  01h    communications
  1506.  02h    primary 3270 emulation
  1507.  03h    async terminal emulation
  1508.  04h    file deflection
  1509.  07h    StreetTalk
  1510.  08h    environment
  1511.  0Ah    secondary 3270 emulation
  1512.  0Bh    semaphore service
  1513.  0Ch    3270 emulation active status
  1514.  0Dh    3270 keyboard interrupt simulator
  1515. --------N-6101--BX0000-----------------------
  1516. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  1517.     AH = 01h
  1518.     BX = 0000h
  1519.     DH = tag number
  1520.     DL = device number
  1521.     DS:SI -> buffer to send to kernel
  1522.     ES:DI -> integer containing size of buffer
  1523. Return: CF clear if successful
  1524.     CF set on error
  1525.         AX = error code (see INT 61"PC/TCP")
  1526. Notes:    there are a large number of tags available; the items returned
  1527.       all refer to local kernel configuration, and are not needed in
  1528.       normal use.
  1529.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1530. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  1531. --------N-6102-------------------------------
  1532. INT 61 - Banyan VINES - GET REVISION NUMBER
  1533.     AH = 02h
  1534.     DS:DX -> 2-byte buffer for result
  1535. Return: AX = 0000h installed
  1536.         DS:DX buffer contains revision number as
  1537.         10000d * major_ver + 100d * minor_ver + patch_revision
  1538. --------N-6102--BX0000-----------------------
  1539. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  1540.     AH = 02h
  1541.     BX = 0000h
  1542.     DH = tag number
  1543.     DL = device number
  1544.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  1545.     ES:DI -> integer containing size of buffer
  1546. Return: CF clear if successful
  1547.         Data loaded into specified buffer, and size value altered
  1548.     CF set on error
  1549.         AX = error code (see INT 61"PC/TCP")
  1550. Notes:    there are a large number of tags available; the items returned
  1551.       all refer to local kernel configuration, and are not needed in
  1552.       normal use.
  1553.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1554. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1555. --------N-6105-------------------------------
  1556. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  1557.     AH = 05h
  1558.     BX = network descriptor
  1559. Return: CF clear if successful
  1560.         DX:AX = Internet address of ND
  1561.     CF set on error
  1562.         AX = error code (see INT 61"PC/TCP")
  1563. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1564.       three bytes beyond the start of the interrupt handler
  1565.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  1566.       interrupt from 20h through E0h
  1567. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  1568. SeeAlso: INT 63/AH=25h"BW-TCP"
  1569. --------N-6106-------------------------------
  1570. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  1571.     AH = 06h
  1572.     BX = network descriptor (must be allocated and open)
  1573.     DS:SI -> 38-byte buffer (see below)
  1574. Return: CF clear if successful
  1575.         buffer filled
  1576.     CF set on error
  1577.         AX = error code (see INT 61"PC/TCP")
  1578. Desc:    returns the statistics relevant to the particular network interface
  1579.        used by the specified network descriptor
  1580. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  1581.  
  1582. Format of buffer:
  1583. Offset    Size    Description
  1584.  00h    WORD    interface class (e.g. 802.3)
  1585.  02h    WORD    type (manufacturer) of interface
  1586.  04h    WORD    interface number
  1587.  06h    DWORD    (big-endian) IP address of interface
  1588.  0Ah    DWORD    subnet mask
  1589.  0Eh    WORD    0001h if interface is up
  1590.  10h    DWORD    total packets received
  1591.  14h    DWORD    total packets sent
  1592.  18h    DWORD    receive errors
  1593.  1Ch    DWORD    send errors
  1594.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  1595.  22h    DWORD    pointer to local net address
  1596. --------N-6107-------------------------------
  1597. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  1598.     AH = 07h
  1599.     BX = local network descriptor
  1600. Return: CF clear if successful
  1601.         AX = global network descriptor
  1602.     CF set on error
  1603.         AX = error code (see INT 61"PC/TCP")
  1604. Notes:    the new network descriptor can be accessed from all processes and is
  1605.       independent of DOS
  1606.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1607. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1608. SeeAlso: INT 61/AH=29h
  1609. --------N-6108-------------------------------
  1610. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  1611.     AH = 08h
  1612.     BX = network descriptor
  1613. Return: CF clear if successful
  1614.         AX = 0000h (BWPCTCP shim)
  1615.     CF set on error
  1616.         AX = error code (see INT 61"PC/TCP")
  1617. Note:    the descriptor will be closed and resources released.  If a stream
  1618.       descriptor, the protocol (FIN etc) is completed unless the
  1619.       non-blocking option has been set.
  1620. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  1621. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1622. --------N-6109-------------------------------
  1623. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  1624.     AH = 09h
  1625. Return: CF clear
  1626. Notes:    this call performs function 08h on every non-global network descriptor.
  1627.       Global descriptors must be released individually.
  1628.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  1629.       interrupt from 20h through E0h
  1630. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1631. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1632. --------N-610A-------------------------------
  1633. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  1634.     AH = 0Ah
  1635.     ???
  1636. Return: ???
  1637. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1638.       documentation
  1639.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1640. SeeAlso: AH=0Bh
  1641. --------N-610B-------------------------------
  1642. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  1643.     AH = 0Bh
  1644.     ???
  1645. Return: ???
  1646. Notes:    this function is described as "unused" in the v2.05 and v2.2
  1647.       documentation
  1648.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1649. SeeAlso: AH=0Ah
  1650. --------N-610C-------------------------------
  1651. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  1652.     AH = 0Ch
  1653.     BX = network descriptor or one of the following:
  1654.         FFFCh for kernel ICMP statistics
  1655.         FFFDh for kernel UDP statistics
  1656.         FFFEh for kernel IP statistics
  1657.         FFFFh for kernel TCP statistics
  1658.     DS:DX -> 64-byte buffer
  1659. Return: CF clear if successful
  1660.         buffer filled
  1661.     CF set on error
  1662.         AX = error code (see INT 61"PC/TCP")
  1663. Notes:    the fields filled in for a network descriptor depend on the protocol
  1664.       family used by that descriptor's connection
  1665.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1666. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1667.  
  1668. Format of kernel TCP statistics:
  1669. Offset    Size    Description
  1670.  00h 16 BYTEs    unused
  1671.  10h    DWORD    bytes sent
  1672.  14h    DWORD    bytes received
  1673.  18h  8 BYTEs    unused
  1674.  20h    DWORD    packets sent
  1675.  24h    DWORD    packets received
  1676.  28h    DWORD    bad checksums
  1677.  2Ch    DWORD    count of window ignored by remote
  1678.  30h    DWORD    timeouts
  1679.  34h    DWORD    resets
  1680.  38h    DWORD    duplicate packets
  1681.  3Ch    DWORD    retransmits
  1682.  
  1683. Format of kernel IP statistics:
  1684. Offset    Size    Description
  1685.  00h  8 BYTEs    unused
  1686.  08h    DWORD    invalid IP header length errors
  1687.  0Ch    DWORD    protocol errors (unwanted packets)
  1688.  10h    DWORD    duplicate fragments received
  1689.  14h    DWORD    bad fragments received
  1690.  18h    DWORD    security errors
  1691.  1Ch    DWORD    count of bad IP addresses received
  1692.  20h    DWORD    packets sent
  1693.  24h    DWORD    packets received
  1694.  28h    DWORD    bad checksums received
  1695.  2Ch    DWORD    total IP protocol errors
  1696.  30h    DWORD    fragmentation errors
  1697.  34h    DWORD    IP packets discarded + bad security + bad fragments
  1698.  38h    DWORD    fragments received
  1699.  3Ch  4 BYTEs    unused
  1700.  
  1701. Format of kernel UDP statistics:
  1702. Offset    Size    Description
  1703.  00h 28 BYTEs    unused
  1704.  1Ch    DWORD    packets dropped for lack of buffers
  1705.  20h    DWORD    packets sent
  1706.  24h    DWORD    packets received
  1707.  28h    DWORD    bad checksums
  1708.  2Ch    DWORD    port not listening errors
  1709.  30h  4 BYTEs    unused
  1710.  34h    DWORD    truncated receives
  1711.  38h  8 BYTEs    unused
  1712.  
  1713. Format of kernel ICMP statistics:
  1714. Offset    Size    Description
  1715.  00h    DWORD    "TimeEx" sent
  1716.  04h    DWORD    "TimeEx" received
  1717.  08h    DWORD    "ParamProb" sent
  1718.  0Ch    DWORD    "ParamProb" received
  1719.  10h    DWORD    redirects received
  1720.  14h    DWORD    source quenches received
  1721.  18h    DWORD    ICMP Echo Requests ("ping") sent
  1722.  1Ch    DWORD    ICMP Echo Requests received
  1723.  20h    DWORD    packets sent
  1724.  24h    DWORD    packets received
  1725.  28h    DWORD    bad packets received
  1726.  2Ch    DWORD    "DestUn" received
  1727.  30h    DWORD    packet send errors
  1728.  34h    DWORD    "DestUn" sent
  1729.  38h    DWORD    ICMP Echo replies received
  1730.  3Ch    DWORD    ICMP Echo replies sent
  1731. --------N-610D-------------------------------
  1732. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  1733.     AH = 0Dh
  1734.     BX = possible network descriptor
  1735. Return: CF clear if valid
  1736.     CF set on error
  1737.         AX = error code (see INT 61"PC/TCP")
  1738. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  1739. SeeAlso: INT 61/AH=22h
  1740. --------N-610E-------------------------------
  1741. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  1742.     AH = 0Eh
  1743.     BX = maximum value of network descriptor for which to return info
  1744.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  1745.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  1746. Return: CF clear
  1747. Notes:    bits in the DS:DX buffer are set if the corresponding network
  1748.       descriptor may be read without blocking; bits in the ES:DI buffer
  1749.       are set if the corresponding network descriptor may be written
  1750.       without blocking.  This implies that the network descriptor has
  1751.       opened correctly and the protocol initialized.
  1752.     the installation check consists of testing for the signature "TCPTSR"
  1753.       three bytes beyond the start of the interrupt handler
  1754.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  1755.       interrupt from 20h through E0h
  1756. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1757. --------N-610F-------------------------------
  1758. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  1759.     AH = 0Fh
  1760. Return: CF clear
  1761.     AX = version (AH = major, AL = minor)
  1762.     BX = patch level
  1763. Notes:    patch levels are no longer used starting with version 2.10; instead,
  1764.       the minor version level is incremented.
  1765.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  1766.       set BX
  1767. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1768. --------N-6110-------------------------------
  1769. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  1770.     AH = 10h
  1771. Return: CF clear if successful
  1772.     CF set on error
  1773.         AX = error code (see INT 61"PC/TCP")
  1774. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1775. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1776. --------N-6111-------------------------------
  1777. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  1778.     AH = 11h
  1779. Return: CF clear
  1780.     AX = previous state
  1781.         0000h async calls were already disabled
  1782.         else  async calls were enabled
  1783. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  1784. --------N-6112-------------------------------
  1785. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  1786.     AH = 12h
  1787. Return: CF clear
  1788.     AX = previous state
  1789.         0000h async calls were disabled
  1790.         else  async calls were already enabled
  1791. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  1792. --------N-6113-------------------------------
  1793. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  1794.     AH = 13h
  1795.     BX = network descriptor (FFFFh for automatic net_getdesc)
  1796.     DX = protocol (see below)
  1797.     DS:SI -> buffer for "addr" structure (see below)
  1798. Return: CF clear if successful
  1799.         AX = network descriptor used or allocated
  1800.     CF set on error
  1801.         AX = error code (see INT 61"PC/TCP")
  1802. Notes:    invokes AH=22h if BX=FFFFh on entry; also invokes AH=19h in various
  1803.       cases
  1804.     will wait for protocol on stream connections unless non-blocking was
  1805.       set with AH=20h
  1806. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  1807. SeeAlso: INT 63/AH=14h"BW-TCP"
  1808.  
  1809. Values for protocol:
  1810.  0001h    raw net (undocumented)
  1811.  0002h    raw IP
  1812.  0003h    datagram (UDP)
  1813.  0004h    stream (TCP)
  1814.  0005h    raw ICMP
  1815.  
  1816. Format of structure "addr":
  1817. Offset    Size    Description
  1818.  00h    DWORD    Internet address (network order)
  1819.  04h    WORD    remote socket number (network order)
  1820.  06h    WORD    local socket number (network order) 0000h means "you choose"
  1821.  08h    BYTE    protocol (see above)
  1822. --------N-6114-------------------------------
  1823. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  1824.     AH = 14h
  1825.     BX = network descriptor
  1826. Return: CF set
  1827.         AX = 0018h (see INT 61"PC/TCP")
  1828. Notes:    displays error message "Illegal system call!  Please upgrade your
  1829.       PCserver software" to standard output
  1830.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1831. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  1832. --------N-6115-------------------------------
  1833. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  1834.     AH = 15h
  1835.     ???
  1836. Return: ???
  1837. Notes:    this function is described as "unused" in the v2.2 documentation
  1838.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1839. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  1840. --------N-6116-------------------------------
  1841. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  1842.     AH = 16h
  1843.     BX = network descriptor
  1844.     DS:DX -> 9-byte buffer for "addr" structure (see AH=13h)
  1845. Return: CF clear if successful
  1846.         buffer filled
  1847.     CF set on error
  1848.         AX = error code (see INT 61"PC/TCP")
  1849. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1850. --------N-6117-------------------------------
  1851. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  1852.     AH = 17h
  1853. Return: CF clear if successful
  1854.     CF set on error
  1855.         AX = error code (see INT 61"PC/TCP")
  1856. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  1857.       in v2.1+, this function calls AH=01h which should be used instead
  1858.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1859. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  1860. --------N-6118-------------------------------
  1861. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  1862.     AH = 18h
  1863.     BX = network descriptor
  1864. Return: CF clear if successful
  1865.     CF set on error
  1866.         AX = error code (see INT 61"PC/TCP")
  1867. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  1868.       although the connection remains open
  1869. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  1870. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  1871. --------N-6119-------------------------------
  1872. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  1873.     AH = 19h
  1874.     BX = network descriptor
  1875. Return: CF clear if successful
  1876.     CF set on error
  1877.         AX = error code (see INT 61"PC/TCP")
  1878. Desc:    immediately destroys the specified connection
  1879. Note:    send a TCP "RST" command if a stream connection is open
  1880. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  1881. --------N-611A-------------------------------
  1882. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  1883.     AH = 1Ah
  1884.     BX = network descriptor
  1885.     CX = number of bytes to transmit (0000h allowed)
  1886.     DX = send options (see below)
  1887.     DS:SI -> data to be written
  1888. Return: CF clear if successful
  1889.         AX = number of bytes actually written
  1890.         DX = ???
  1891.     CF set on error
  1892.         AX = error code (see INT 61"PC/TCP")
  1893. Notes:    the installation check consists of testing for the signature "TCPTSR"
  1894.       three bytes beyond the start of the interrupt handler
  1895.     INT 61 is the default; PC/TCP v2.05 may be configured to use any
  1896.       interrupt from 20h through E0h
  1897. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  1898. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  1899.  
  1900. Bitfields for send options:
  1901. Bit(s)    Description
  1902.  0    signal "URG"ent data
  1903.  3    attempt rerouting on non-stream calls if first attempt fails
  1904.  4    send data with PUSH flag (no override of Nagle) (see option 0Ch)
  1905.  5    fail rather than truncating datagram
  1906.  6    fail rather than blocking
  1907.  7    broadcast packet
  1908. --------N-611B-------------------------------
  1909. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  1910.     AH = 1Bh
  1911.     BX = network descriptor
  1912.     CX = maximum number of bytes to read
  1913.     DX = receive options (see below)
  1914.     DS:SI -> buffer for data
  1915.     ES:DI -> "addr" structure (see AH=13h) for remote from which to read
  1916.         0000h:0000h for any
  1917. Return: CF clear if successful
  1918.         AX = number of bytes actually read
  1919.         DX = ???
  1920.     CF set on error
  1921.         AX = error code (see INT 61"PC/TCP")
  1922. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  1923.  
  1924. Bitfields for receive options:
  1925. Bit(s)    Description
  1926.  1    do not remove data from queue, just copy it
  1927.  2    do not copy data, just remove it from queue
  1928.  5    fail if datagram would be truncated
  1929.  6    do not block, return error if no data available
  1930. Note:    special case for UDP: if both 1 and 2 set, return num of datagrams
  1931. --------N-611C-------------------------------
  1932. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  1933.     AH = 1Ch
  1934.     BX = network descriptor
  1935.     CX = number of bytes to transmit (0000h allowed)
  1936.     DX = send options (see AH=1Ah)
  1937.     DS:SI -> data to be written
  1938.     ES:DI -> "addr" structure (see AH=13h)
  1939. Return: CF clear if successful
  1940.         AX = number of bytes actually written
  1941.         DX = ???
  1942.     CF set on error
  1943.         AX = error code (see INT 61"PC/TCP")
  1944. Note:    this function differs from AH=1Ah in that the address and socket
  1945.       numbers can be overridden
  1946. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  1947. SeeAlso: INT 63/AH=21h"BW-TCP"
  1948. --------N-611D-------------------------------
  1949. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  1950.     AH = 1Dh
  1951.     BX = network descriptor
  1952.     CX = maximum number of bytes to read
  1953.     DX = receive options (see AH=1Bh)
  1954.     DS:SI -> buffer for received data
  1955.     ES:DI -> 9-byte buffer containing "addr" structure (see AH=13h)
  1956. Return: CF clear if successful
  1957.         AX = number of bytes read
  1958.         DX = ???
  1959.     CF set on error
  1960.         AX = error code (see INT 61"PC/TCP")
  1961. Notes:    this function can read from any host or a designated host depending
  1962.       on settings in the "addr" structure
  1963.     only for use with datagram or Raw descriptors
  1964. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  1965. --------N-611E-------------------------------
  1966. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  1967.     AH = 1Eh
  1968.     BX = network descriptor
  1969. Return: CF clear if successful
  1970.     CF set on error
  1971.         AX = error code (see INT 61"PC/TCP")
  1972. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  1973.       if necessary
  1974.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  1975. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1976. --------N-611F-------------------------------
  1977. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  1978.     AH = 1Fh
  1979.     BX = network descriptor
  1980.     CX = event type (see below)
  1981.     DS:SI -> event handler routine
  1982.     ES:DI = 32-bit hint passed to handler
  1983. Return: CF clear if successful
  1984.         DS:DX -> previous handler
  1985.     CF set on error
  1986.         AX = error code (see INT 61"PC/TCP")
  1987. Note:    ICMP messages do not trigger events on stream connections
  1988. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  1989.  
  1990. Values for event type:
  1991.  00h    alarm
  1992.  01h    open (successfully opened stream connection)
  1993.  02h    receive (data available)
  1994.  03h    transmit (ACK received on stream connection)
  1995.  04h    transmit flush???
  1996.  05h    foreign close (remote host closed data connection)
  1997.  06h    close (local host closed connection and protocol is complete)
  1998.  07h    error (error code passed to handler as arg)
  1999.  
  2000. Event handler called with:
  2001.     BX = network descriptor
  2002.     CX = event type (see above)
  2003.     DS:DX -> arg
  2004.     ES:DI = 32-bit hint value
  2005.     STACK:    small stack, possibly the DOS stack
  2006. --------N-6120-------------------------------
  2007. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  2008.     AH = 20h
  2009.     BX = network descriptor
  2010.     CX = length of buffer (usually 04h)
  2011.     DS:DX -> buffer containing option
  2012.     SI = (ignored by v2.2-)
  2013.     DI = option to set (see below)
  2014. Return: CF clear if successful
  2015.     CF set on error
  2016.         AX = error code (see INT 61"PC/TCP")
  2017. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  2018.       others return CF clear
  2019. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  2020.  
  2021. Values for option to set:
  2022.  01h    set non-blocking mode if non-zero
  2023.  02h    timeout of call in milliseconds
  2024.  03h    user-defined 4-byte magic cookie (not used by kernel)
  2025.  04h    TCP window or UDP buffer count (WORD, unsigned)
  2026.  06h    do TCP keep-alives if non-zero
  2027.  09h    (v2.1+) set IP precedence
  2028.  0Ah    (v2.1+) set IP type of service
  2029.  0Bh    use a privileged port if port = 0
  2030.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  2031. Note:    use "C" true or false values for boolean options
  2032. --------N-6121-------------------------------
  2033. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  2034.     AH = 21h
  2035.     BX = network descriptor
  2036.     CX = length of buffer
  2037.     DS:DX -> buffer for return values
  2038.     SI = 0004h (ignored by v2.2-)
  2039.     DI = option (see AH=20h)
  2040. Return: CF clear if successful
  2041.         DS:DX -> value (usually 32 bits) returned by selected option
  2042.     CF set on error
  2043.         AX = error code (see INT 61"PC/TCP")
  2044. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2045. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  2046. --------N-6122-------------------------------
  2047. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  2048.     AH = 22h
  2049. Return: CF clear if successful
  2050.         AX = network descriptor
  2051.     CF set on error
  2052.         AX = error code (see INT 61"PC/TCP")
  2053. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  2054.       is made to allocate this as a file descriptor.  Hence a number may
  2055.       not refer to a PC/TCP network descriptor and a DOS file handle
  2056.       simultaneously.
  2057. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  2058. --------N-6123-------------------------------
  2059. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  2060.     AH = 23h
  2061.     BX = network descriptor or FFFFh to allocate descriptor
  2062.     DX = type of service
  2063.     DS:SI -> "addr" structure (see AH=13h)
  2064. Return: CF clear if successful
  2065.         AX = network descriptor
  2066.     CF set on error
  2067.         AX = error code (see INT 61"PC/TCP")
  2068. Notes:    type of service and "addr" structure are as for AH=13h
  2069.     any of the address structure can be zero; normally local socket number
  2070.       is filled in prior to call
  2071. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  2072. SeeAlso: INT 63/AH=12h"BW-TCP"
  2073. --------N-6124-------------------------------
  2074. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  2075.     AH = 24h
  2076. Return: always successful
  2077. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  2078. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  2079. --------N-6125-------------------------------
  2080. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  2081.     AH = 25h
  2082.     DX,BX = IP address in network order
  2083.     CX = length of buffer for name
  2084.     DS:SI -> buffer for host name
  2085. Return: CF clear if successful
  2086.        buffer filled with ASCIZ host name
  2087.     CF set on error
  2088.         AX = error code (see INT 61"PC/TCP")
  2089. Note:    this function will use the host table and or DNS to resolve the
  2090.       address, depending on kernel configuration.  Use this call for the
  2091.       normal gethostbyaddr function.
  2092. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  2093. --------N-6126-------------------------------
  2094. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  2095.     AH = 26h
  2096.     DX,BX = IP address in network order
  2097.     CX = length of buffer
  2098.     DS:SI -> buffer for host name
  2099. Return: CF clear if successful
  2100.         buffer filled with ASCIZ host name
  2101.     CF set on error
  2102.         AX = error code (see INT 61"PC/TCP")
  2103. Notes:    normally one would use AH=25h instead of this function
  2104.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2105. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  2106. --------N-6127-------------------------------
  2107. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  2108.     AH = 27h
  2109.     DX,BX = IP address in network order
  2110.     CX = length of buffer
  2111.     DS:SI -> buffer for host name
  2112. Return: CF clear if successful
  2113.         buffer filled with ASCIZ host name
  2114.     CF set on error
  2115.         AX = error code (see INT 61"PC/TCP")
  2116. Note:    normally one would use AH=25h instead of this function
  2117. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  2118. --------N-6128-------------------------------
  2119. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  2120.     AH = 28h
  2121.     BX = network descriptor 1
  2122.     CX = network descriptor 2
  2123. Return: CF clear if successful
  2124.     CF set on error
  2125.         AX = error code (see INT 61"PC/TCP")
  2126. Note:    the two descriptors will exchange places; both must be local or both
  2127.       global
  2128. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2129. --------N-6129-------------------------------
  2130. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  2131.     AH = 29h
  2132. Return: CF clear if successful
  2133.         AX = network descriptor
  2134.     CF set on error
  2135.         AX = error code (see INT 61"PC/TCP")
  2136. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  2137.       kernel; the returned descriptor will be >= 40h and cannot be used
  2138.       with "net_select" (AH=0Eh)
  2139. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  2140. SeeAlso: INT 61/AH=22h
  2141. --------N-612A-------------------------------
  2142. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  2143.     AH = 2Ah
  2144.     DS:SI -> 26-byte buffer for configuration information (see below)
  2145. Return: CF clear
  2146.     AX = 0000h
  2147.     buffer filled
  2148. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  2149.       versions 2.05 through 2.2
  2150.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2151. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2152.  
  2153. Format of configuration information:
  2154. Offset    Size    Description
  2155.  00h    BYTE    maximum TCP connections available
  2156.  01h    BYTE    maximum UDP connections available
  2157.  02h    BYTE    maximum IP connections available
  2158.  03h    BYTE    maximum Raw Net connections available
  2159.  04h    BYTE    number of TCP connections currently in use
  2160.  05h    BYTE    number of UDP connections currently in use
  2161.  06h    BYTE    number of IP connections currently in use
  2162.  07h    BYTE    number of Raw Net connections currently in use
  2163.  08h    WORD    number of local network descriptors active
  2164.  0Ah    WORD    number of global network descriptors active
  2165.  0Ch    BYTE    maximum header size on network
  2166.  0Dh    BYTE    maximum trailer size on network
  2167.  0Eh    WORD    size of large packet buffer
  2168.  10h    WORD    number of network interfaces attached
  2169.  12h    DWORD    milliseconds since kernel started
  2170.  16h    DWORD    IP broadcast address
  2171. --------N-612B-------------------------------
  2172. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  2173.     AH = 2Bh
  2174.     BX = network descriptor
  2175.     CX,DX = time before alarm in milliseconds
  2176.     DS:SI -> handler which will receive call (see INT 61/AH=1Fh)
  2177.     ES:DI = 32-bit cookie passed to handler
  2178. Return: CF clear if successful
  2179.     CF set on error
  2180.         AX = error code (see INT 61"PC/TCP")
  2181. Notes:    this function will cause a NET_AS_ALARM to be generated; it is intended
  2182.       for TSRs, etc. to regain control periodically
  2183.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2184. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2185. --------N-6130-------------------------------
  2186. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  2187.     AH = 30h
  2188.     BX,DX = IP address of host
  2189.     CX = length of data to send
  2190. Return: CF clear if successful (i.e. reply received)
  2191.     CF set on error
  2192.         AX = error code (see INT 61"PC/TCP")
  2193. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2194. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2195. --------N-61---------------------------------
  2196. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  2197.     AH = function
  2198.         31h "net_add_route"
  2199.         32h "net_del_route"
  2200.         33h "net_dump_routes"
  2201. Notes:    these functions are described as "unused" in the v2.2 documentation
  2202.     router configuration can be altered using INT 61/AH=01h
  2203.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2204. --------N-6134-------------------------------
  2205. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  2206.     AH = 34h
  2207.     ???
  2208. Return: ???
  2209. Notes:    this function is described as "reserved" in the v2.2 documentation
  2210.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2211. --------N-6150-------------------------------
  2212. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  2213.     AH = 50h
  2214.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  2215. Return: CF clear if successful
  2216.         DX:AX -> IP address
  2217.     CF set on error
  2218.         AX = error code (see INT 61"PC/TCP")
  2219. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2220. --------N-6151-------------------------------
  2221. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  2222.     AH = 51h
  2223.     CX = size of destination buffer
  2224.     DS:DX -> ASCIZ host name (max 127 chars)
  2225.     ES:DI -> destination buffer or 0000h:0000h
  2226. Return: CF clear if successful
  2227.         DX:AX -> IP address of host
  2228.         destination buffer filled with canonical host name
  2229.     CF set on error
  2230.         AX = error code (see INT 61"PC/TCP")
  2231. Note:    this function calls DOS, and can fail if the DOS call fails
  2232. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2233. --------N-6152-------------------------------
  2234. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  2235.     AH = 52h
  2236.     CX = size of destination buffer
  2237.     DS:DX -> ASCIZ host name (max 127 chars)
  2238.     ES:DI -> destination buffer or 0000h:0000h
  2239. Return: CF clear if successful
  2240.         DX:AX -> IP address of host
  2241.         destination buffer filled with canonical host name
  2242.     CF set on error
  2243.         AX = error code (see INT 61"PC/TCP")
  2244. Note:    this function will poll all configured domain name servers if necessary
  2245. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2246. --------N-6153-------------------------------
  2247. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  2248.     AH = 53h
  2249.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  2250. Return: CF clear if successful
  2251.         DX:AX -> IP address of host
  2252.     CF set on error
  2253.         AX = error code (see INT 61"PC/TCP")
  2254. Note:    this function is not supported by v2.10+
  2255. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  2256. --------N-6154-------------------------------
  2257. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  2258.     AH = 54h
  2259.     CX = size of destination buffer
  2260.     DS:DX -> ASCIZ host name (max 127 chars)
  2261.     ES:DI -> destination buffer or 0000h:0000h
  2262. Return: CF clear if successful
  2263.         DX:AX -> IP address of host
  2264.         destination buffer filled with canonical host name
  2265.     CF set on error
  2266.         AX = error code (see INT 61"PC/TCP")
  2267. Note:    this function uses all configured methods in turn to resolve the
  2268.       name (numerical, then host table, then DNS, then IEN116)
  2269. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  2270.       greater than 54h in AH may crash the system.    Other kernels may have
  2271.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  2272. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  2273. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  2274. --------*-62---------------------------------
  2275. INT 62 - reserved for user interrupt
  2276. --------d-62---------------------------------
  2277. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  2278. Notes:    this vector stores the third four bytes of the parameter table for
  2279.       hard disk 0
  2280. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  2281. --------b-62---------------------------------
  2282. INT 62 - HP 95LX - USED BY CALCULATOR
  2283. SeeAlso: INT 60"HP 95LX"
  2284. ----------62---------------------------------
  2285. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  2286.     AH = function (00h to 07h)
  2287.     CX = FFFEh
  2288.     DX = FFFFh
  2289.     ???
  2290. Return: ???
  2291. Note:    the installation check consists of testing for the string "DBLIBRARY"
  2292.       2 bytes past the interrupt handler
  2293. SeeAlso: AH=08h"SQL"
  2294. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  2295. --------N-6200-------------------------------
  2296. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  2297.     AH = 00h
  2298.     DS:DX -> 6-byte buffer for address
  2299. Return: AX = length of hardware address???
  2300. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  2301.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  2302.       consecutive interrupt (64h by default) if it is loaded
  2303. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  2304. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  2305. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  2306. --------V-620000-----------------------------
  2307. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  2308.     AX = 0000h
  2309.     BX = page number (0000h-003Fh)
  2310. Return: AX = status (0000h,0001h,0007h,0008h) (see below)
  2311. Program: FGDRIVER is the external video driver for the shareware
  2312.       Fastgraph/Light by Ted Gruber Software
  2313. Notes:    For FGDRIVER v1.10, this function was "FG_GETMODE" (see AX=003Fh);
  2314.       "FG_ALLOCATE" was AX=0042h
  2315.     The amount of memory required by the virtual video page depends on the
  2316.       current video mode
  2317.     The installation check consists of testing for the signature "FG" ten
  2318.       bytes beyond the start of the interrupt handler
  2319. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=002Eh
  2320. Index:    installation check;Fastgraph/Light
  2321.  
  2322. Values for status:
  2323.  0000h    successful
  2324.  0001h    specified page is a physical or logical page
  2325.  0007h    virtual page created/released, but memory control blocks corrupted
  2326.  0008h    not enough memory
  2327.  0009h    attempt to free a page which was never created
  2328. --------V-620001-----------------------------
  2329. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  2330.     AX = 0001h
  2331.     BX = page number (0001h-003Fh)
  2332. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see below)
  2333. Notes:    For FGDRIVER v1.10, this function was "FG_SETMODE" (see AX=0093h);
  2334.       "FG_ALLOCCMS" was AX=009Dh
  2335.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2336.       (see AX=0012h)
  2337. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0012h,AX=002Eh
  2338.  
  2339. Values for status:
  2340.  0000h    successful
  2341.  FFFCh    insufficient memory
  2342.  FFFDh    page already created, or exists as physical or virtual page
  2343.  FFFEh    invalid page number
  2344.  FFFFh    memory manager not initialized
  2345. --------V-620002-----------------------------
  2346. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  2347.     AX = 0002h
  2348.     BX = page number (0001h-003Fh)
  2349. Return: AX = status (see AX=0001h)
  2350. Notes:    For FGDRIVER v1.10, this function was "FG_TESTMODE" (see AX=00A7h);
  2351.       "FG_ALLOCEMS" was AX=009Eh
  2352.     You must first call "FG_INITEMS" (see AX=004Ch) before using this
  2353.       function
  2354.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2355.       (see AX=0012h)
  2356. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0012h,AX=002Eh,AX=004Ch
  2357. --------V-620003-----------------------------
  2358. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  2359.     AX = 0003h
  2360.     BX = page number (0001h-003Fh)
  2361. Return: AX = status (see AX=0001h)
  2362. Notes:    For FGDRIVER v1.10, this function was "FG_BESTMODE" (see AX=0005h),
  2363.       and "FG_ALLOCXMS" was AX=009Fh
  2364.     You must first call "FG_INITXMS" (see AX=004Eh) before using this
  2365.       function
  2366.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  2367.       (see AX=0012h)
  2368. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0012h,AX=002Eh,AX=004Eh
  2369. --------V-620004-----------------------------
  2370. INT 62 u - FGDRIVER v1.10,3.03 - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  2371.     AX = 0004h
  2372. Return: AX = proposed video mode number (see AX=0093h)
  2373. Program: FGDRIVER is the external video driver for the shareware
  2374.       Fastgraph/Light by Ted Gruber Software
  2375. SeeAlso: AX=0005h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2376. --------V-620005-----------------------------
  2377. INT 62 u - FGDRIVER v3.03 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  2378.     AX = 0005h
  2379.     BX = horizontal resolution
  2380.     CX = vertical resolution
  2381.     DX = number of video pages required (both physical and virtual)
  2382. Return: AX = proposed video mode number or FFFFh if no matching video mode
  2383. Notes:    For FGDRIVER v1.10, this function was "FG_EGACHECK" (see AX=0023h);
  2384.        "FG_BESTMODE" was AX=0003h
  2385.     You must first call "FG_SVGAINIT" (see AX=00A1h) to get SVGA video
  2386.       modes
  2387. SeeAlso: AX=0004h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  2388. --------V-620006-----------------------------
  2389. INT 62 u - FGDRIVER v3.03 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  2390.     AX = 0006h
  2391.     BX = left column
  2392.     CX = right column
  2393.     DX = top row
  2394.     SI = bottom row
  2395. Notes:    For FGDRIVER v1.10, this function was "FG_RESET" (see AX=0081h);
  2396.       "FG_BOX" was AX=00A2h
  2397.     The rectangle is drawn in screen space, respecting the clipping region,
  2398.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  2399.       (default = 1 is set by "FG_SETMODE")
  2400.     This function has no effect in text modes
  2401. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0014h,AX=001Bh,AX=0024h,AX=0076h
  2402. --------V-620007-----------------------------
  2403. INT 62 u - FGDRIVER v3.03 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  2404.     AX = 0007h
  2405.     BX = width of left and right edges in pixels (> 0)
  2406.     CX = width of top and bottom edges in pixels (> 0)
  2407. Note:    For FGDRIVER v1.10, this function was "FG_CURSOR" (see AX=0013h);
  2408.       "FG_BOXDEPTH" was AX=00A3h
  2409. SeeAlso: AX=0006h,AX=0008h
  2410. --------V-620008-----------------------------
  2411. INT 62 u - FGDRIVER v3.03 - "FG_BOXX" - XOR HOLLOW RECTANGLE
  2412.     AX = 0008h
  2413.     BX = left column
  2414.     CX = right column
  2415.     DX = top row
  2416.     SI = bottom row
  2417. Notes:    For FGDRIVER v1.10, this function was unused and "FG_BOXX" did not
  2418.       exist yet
  2419.     The rectangle is XORed into screen space, respecting the clipping
  2420.       region, with edges of the width specified with "FG_BOXDEPTH"
  2421.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  2422.     This function has no effect in text modes
  2423. SeeAlso: AX=0006h,AX=0007h,AX=001Fh,AX=0020h,AX=0077h
  2424. --------V-620009-----------------------------
  2425. INT 62 u - FGDRIVER v3.03 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  2426.     AX = 0009h
  2427.     BX = joystick number (0001h or 0002h)
  2428. Return: AX = button states
  2429.         bit 0: top button pressed
  2430.         bit 1: bottom button pressed
  2431. Note:    For FGDRIVER v1.10, this function was unused; "FG_BUTTON" was AX=0078h
  2432. SeeAlso: AX=0044h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  2433. --------V-62000A-----------------------------
  2434. INT 62 u - FGDRIVER v3.03 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  2435.     AX = 000Ah
  2436. Return: AX = CapsLock state (0000h off, 0001h on)
  2437. Note:    For FGDRIVER v1.10, this function was "FG_GETMAXX" (see AX=003Dh);
  2438.       "FG_CAPSLOCK" was AX=0070h
  2439. SeeAlso: AX=006Ch,AX=0088h,AX=008Bh,AX=0094h
  2440. --------V-62000B-----------------------------
  2441. INT 62 u - FGDRIVER v3.03 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  2442.     AX = 000Bh
  2443.     BX = number of characters to recolor
  2444. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAXY" (see AX=003Eh);
  2445.       "FG_CHGATTR" was AX=0035h
  2446.     This call is ignored in graphics modes
  2447.     Starting at the current text cursor position, the specified number of
  2448.       characters have their attributes to the current text attribute
  2449. SeeAlso: AX=000Ch,AX=0030h,AX=008Ah
  2450. --------V-62000C-----------------------------
  2451. INT 62 u - FGDRIVER v3.03 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  2452.     AX = 000Ch
  2453.     CX = length of string
  2454.     ES:BX -> string to be displayed
  2455. Return: text cursor updated
  2456. Notes:    For FGDRIVER v1.10, this function was "FG_XALPHA" (see AX=00B0h);
  2457.       "FG_CHGTEXT" was AX=0036h
  2458.     This call is ignored in graphics modes
  2459. SeeAlso: AX=000Bh,AX=007Ch
  2460. --------V-62000D-----------------------------
  2461. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  2462.     AX = 000Dh
  2463.     BX = radius in horizontal screen space units (> 0)
  2464. Notes:    For FGDRIVER v1.10, this function was "FG_YALPHA" (see AX=00B2h);
  2465.       "FG_CIRCLE" was AX=0030h
  2466.     The circle is drawn in screen space, centered at the current graphics
  2467.       cursor position
  2468.     This call is ignored in text modes
  2469. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0024h,AX=0079h
  2470. --------V-62000E-----------------------------
  2471. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  2472.     AX = 000Eh
  2473.     BX = radius in horizontal screen space units (> 0)
  2474. Notes:    For FGDRIVER v1.10, this function was "FG_XCONVERT" (see AX=00B1h);
  2475.       "FG_CIRCLEF" did not exist yet
  2476. SeeAlso: AX=0008h,AX=000Dh,AX=0025h,AX=0078h
  2477. --------V-62000F-----------------------------
  2478. INT 62 u - FGDRIVER v3.03 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  2479.     AX = 000Fh
  2480.     ES:BX -> array containing image stored as a masking map (see AX=001Dh)
  2481.     CX = number of pixel runs in masking map
  2482.     DX = width of masking map in pixels
  2483. Notes:    For FGDRIVER v1.10, this function was "FG_YCONVERT" (see AX=00B3h);
  2484.        "FG_CLIPMASK" was AX=0052h
  2485.     This call is ignored in text modes and in native EGA and VGA graphics
  2486.       modes
  2487.     The image is drawn with its lower left corner at the current graphics
  2488.       cursor position
  2489. SeeAlso: AX=0010h,AX=001Dh,AX=002Ah,AX=0086h,AX=008Ch,AX=00A5h
  2490. --------V-620010-----------------------------
  2491. INT 62 u - FGDRIVER v3.03 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  2492.     AX = 0010h
  2493.     ES:BX -> mode-specific bitmap
  2494.     CX = width of bit map in bytes
  2495.     DX = height of bit map in pixel rows
  2496. Notes:    For FGDRIVER v1.10, this function was "FG_GETLINES" (see AX=003Bh);
  2497.       "FG_CLPIMAGE" was AX=004Ah
  2498.     This call is ignored in text modes
  2499.     The image is drawn with its lower left corner at the current graphics
  2500.       cursor position
  2501.     The current clipping region is used, extended to a byte boundary
  2502. SeeAlso: AX=000Fh,AX=0022h,AX=002Ch,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2503. --------V-620011-----------------------------
  2504. INT 62 u - FGDRIVER v3.03 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  2505.     AX = 0011h
  2506.     BX = screen space column of left edge
  2507.     CX = screen space column of right edge
  2508.     DX = screen space row of top edge
  2509.     SI = screen space row of bottom edge
  2510. Notes:    For FGDRIVER v1.10, this function was "FG_SETLINES" (see AX=0092h);
  2511.       "FG_CLPRECT" was AX=002Bh
  2512.     This call is ignored in text modes
  2513. SeeAlso: AX=0006h,AX=000Fh,AX=0010h,AX=0021h,AX=0080h,AX=008Ch
  2514. --------V-620012-----------------------------
  2515. INT 62 u - FGDRIVER v3.03 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  2516.     AX = 0012h
  2517.     BX = source page number (0000h-003Fh)
  2518.     CX = destination page number (0000h-003Fh)
  2519. Notes:    For FGDRIVER v1.10, this function was unused;"FG_COPYPAGE" was AX=005Fh
  2520.     If both source and destination pages are logical pages, they must both
  2521.       be located in the same type (conventional, EMS, XMS) of memory
  2522. SeeAlso: AX=0083h,AX=0087h,AX=00A6h,AX=00A9h
  2523. --------V-620013-----------------------------
  2524. INT 62 u - FGDRIVER v3.03 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  2525.     AX = 0013h
  2526.     BX = new state (0000h invisible, 0001h visible)
  2527. Notes:    For FGDRIVER v1.10, this function was unused; "FG_CURSOR" was AX=0007h
  2528.     This call is ignored in text modes
  2529. SeeAlso: AX=000Ch,AX=0045h,AX=0047h,AX=0055h,AX=005Fh,AX=0063h,AX=0068h
  2530. SeeAlso: AX=00AFh
  2531. --------V-620014-----------------------------
  2532. INT 62 u - FGDRIVER v3.03 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  2533.     AX = 0014h
  2534.     BX = endpoint column
  2535.     CX = endpoint row
  2536.     DX = dash pattern (set bits cause drawn pixels)
  2537. Notes:    For FGDRIVER v1.10, this function was "FG_DEFCOLOR" (see AX=0016h);
  2538.       "FG_DASH" was AX=0027h
  2539.     This call is ignored in text modes
  2540.     The starting point is the current graphics cursor position; the cursor
  2541.       position is updated
  2542. SeeAlso: AX=0015h,AX=001Bh,AX=0076h
  2543. --------V-620015-----------------------------
  2544. INT 62 u - FGDRIVER v3.03 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  2545.     AX = 0015h
  2546.     BX = endpoint column offset
  2547.     CX = endpoint row offset
  2548.     DX = dash pattern (set bits cause drawn pixels)
  2549. Notes:    For FGDRIVER v1.10, this function was "FG_GETCOLOR" (see AX=0034h);
  2550.       "FG_DASHREL" was AX=0028h
  2551.     This call is ignored in text modes
  2552.     The starting point is the current graphics cursor position; the cursor
  2553.       position is updated
  2554. SeeAlso: AX=0014h,AX=001Ch,AX=0076h
  2555. --------V-620016-----------------------------
  2556. INT 62 u - FGDRIVER v3.03 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  2557.     AX = 0016h
  2558.     BX = color index (0000h-00FFh)
  2559.     CX = new color value (0 to maximum color value for current video mode)
  2560. Notes:    For FGDRIVER v1.10, this function was "FG_GETINDEX" (see AX=0039h);
  2561.       "FG_DEFCOLOR" was AX=0014h
  2562.     This call is ignored in text modes and 256-color graphics modes
  2563. SeeAlso: AX=0034h,AX=0039h,AX=008Dh
  2564. --------V-620017-----------------------------
  2565. INT 62 u - FGDRIVER v3.03 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  2566.     AX = 0017h
  2567.     BX = source page
  2568.     CX = destination page
  2569. Desc:    specify the source and destination SVGA banks for block transfers on
  2570.       extended video pages
  2571. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTE" (see AX=006Fh);
  2572.       "FG_DEFPAGES" did not exist yet
  2573.     This function is ignored if the video controller does not support
  2574.       extended pages or the current video mode does not allow them
  2575. SeeAlso: AX=0012h,AX=00A9h
  2576. --------V-620018-----------------------------
  2577. INT 62 u - FGDRIVER v3.03 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  2578.     AX = 0018h
  2579.     ES:BX -> ASCIZ filename
  2580.     CX = image width in pixels (> 0)
  2581.     DX = image format
  2582.         0000h Fastgraph standard pixel run format
  2583.         0001h packed pixel run format
  2584. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTES" (see AX=0070h);
  2585.       "FG_DISPFILE" was AX=004Fh
  2586.     This call is ignored in text modes
  2587.     The image is displayed with its lower left corner at the current
  2588.       graphics cursor position
  2589. SeeAlso: AX=0019h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2590. --------V-620019-----------------------------
  2591. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  2592.     AX = 0019h
  2593.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  2594.     CX = number of pixel runs to display
  2595.     DX = width of image in pixels (> 0)
  2596. Notes:    For FGDRIVER v1.10, this function was "FG_SETATTR" (see AX=008Ah);
  2597.       "FG_DISPLAY" was AX=004Dh
  2598.     This call is ignored in text modes
  2599.     The image is displayed with its lower left corner at the current
  2600.       graphics cursor position
  2601. SeeAlso: AX=0018h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  2602. --------V-62001A-----------------------------
  2603. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  2604.     AX = 001Ah
  2605.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  2606.         contains the color for the first run in its high nybble and the
  2607.         color for the second run in its low nybble)
  2608.     CX = number of pixel runs to display
  2609.     DX = width of image in pixels (> 0)
  2610. Notes:    For FGDRIVER v1.10, this function was "FG_SETCOLOR" (see AX=008Dh);
  2611.       "FG_DISPLAYP" was AX=004Eh
  2612.     This call is ignored in text modes
  2613.     The image is displayed with its lower left corner at the current
  2614.       graphics cursor position
  2615. SeeAlso: AX=0018h,AX=0019h,AX=009Ah,AX=009Bh,AX=009Ch
  2616. --------V-62001B-----------------------------
  2617. INT 62 u - FGDRIVER v3.03 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  2618.     AX = 001Bh
  2619.     BX = endpoint column
  2620.     CX = endpoint row
  2621. Notes:    For FGDRIVER v1.10, this function was "FG_SETRGB" (see AX=0096h);
  2622.       "FG_DRAW" was AX=0025h
  2623.     This call is ignored in text modes
  2624.     The starting point is the current graphics cursor position; the cursor
  2625.       position is updated
  2626. SeeAlso: AX=0014h,AX=001Eh,AX=001Fh,AX=0024h,AX=0076h,AX=0077h
  2627. --------V-62001C-----------------------------
  2628. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  2629.     AX = 001Ch
  2630.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  2631.     CX = width of bitmap in bytes
  2632.     DX = height of bitmap in pixel rows
  2633. Note:    For FGDRIVER v1.10, this function was "FG_GETRGB" (see AX=0042h);
  2634.       "FG_DRAWMAP" was AX=0047h
  2635. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2636. --------V-62001D-----------------------------
  2637. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  2638.     AX = 001Dh
  2639.     ES:BX -> array containing image stored as a masking map (see below)
  2640.     CX = number of pixel runs in masking map
  2641.     DX = width of masking map in pixels
  2642. Notes:    For FGDRIVER v1.10, this function was "FG_MAPRGB" (see AX=005Ah);
  2643.       "FG_DRAWMASK" was AX=0051h
  2644.     This call is ignored in text modes and in native EGA and VGA graphics
  2645.       modes
  2646.     The image is drawn with its lower left corner at the current graphics
  2647.       cursor position
  2648. SeeAlso: AX=000Fh,AX=001Dh,AX=0086h,AX=008Ch
  2649.  
  2650. Format of masking map:
  2651. Offset    Size    Description
  2652.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  2653.  01h    BYTE    length of first "zero" run (pixels set to background color)
  2654.  02h    BYTE    length of second "protect" run
  2655.  03h    BYTE    length of second "zero" run
  2656.     ...
  2657. --------V-62001E-----------------------------
  2658. INT 62 u - FGDRIVER v3.03 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  2659.     AX = 001Eh
  2660.     BX = endpoint column offset
  2661.     CX = endpoint row offset
  2662. Notes:    For FGDRIVER v1.10, this function was "FG_ERASE" (see AX=0026h);
  2663.       "FG_DRAWREL" was AX=0026h
  2664.     This call is ignored in text modes
  2665.     The starting point is the current graphics cursor position; the cursor
  2666.       position is updated
  2667. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Fh,AX=0024h,AX=0076h
  2668. --------V-62001F-----------------------------
  2669. INT 62 u - FGDRIVER v3.03 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  2670.     AX = 001Fh
  2671.     BX = endpoint column offset
  2672.     CX = endpoint row offset
  2673. Desc:    draw a solid line, XORing each pixel onto the screen
  2674. Notes:    For FGDRIVER v1.10, this function was "FG_POINT" (see AX=0076h);
  2675.       "FG_DRAWRELX" did not exist yet
  2676.     This call is ignored in text modes
  2677.     The starting point is the current graphics cursor position; the cursor
  2678.       position is updated
  2679. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Eh,AX=0024h,AX=0077h
  2680. --------V-620020-----------------------------
  2681. INT 62 u - FGDRIVER v3.03 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  2682.     AX = 0020h
  2683.     BX = endpoint column
  2684.     CX = endpoint row
  2685. Desc:    draw a solid line, XORing each pixel onto the screen
  2686. Notes:    For FGDRIVER v1.10, this function was "FG_GETPIXEL" (see AX=0041h);
  2687.       "FG_DRAWX" did not exist yet
  2688.     This call is ignored in text modes
  2689.     The starting point is the current graphics cursor position; the cursor
  2690.       position is updated
  2691. SeeAlso: AX=001Bh,AX=001Fh,AX=0076h
  2692. --------V-620021-----------------------------
  2693. INT 62 u - FGDRIVER v3.03 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  2694.     AX = 0021h
  2695.     BX = screen space column of left edge
  2696.     CX = screen space column of right edge
  2697.     DX = screen space row of top edge
  2698.     SI = screen space row of bottom edge
  2699.     ES:DI -> dithering matrix (video-mode dependent)
  2700. Notes:    For FGDRIVER v1.10, this function was "FG_GETXPOS" (see AX=0045h);
  2701.       "FG_DRECT" was AX=002Ch
  2702.     This call is ignored in text modes
  2703. SeeAlso: AX=0006h,AX=0008h,AX=0011h,AX=0031h,AX=0072h,AX=0080h
  2704. --------V-620022-----------------------------
  2705. INT 62 u - FGDRIVER v3.03 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  2706.     AX = 0022h
  2707.     ES:BX -> video mode-specific bitmap
  2708.     CX = width of bitmap in bytes
  2709.     DX = height of bitmap in pixel rows
  2710. Notes:    For FGDRIVER v1.10, this function was "FG_GETYPOS" (see AX=0047h);
  2711.       "FG_DRWIMAGE" was AX=0049h
  2712.     The image will be drawn with its lower left corner at the current
  2713.       cursor position (either text or graphics)
  2714. SeeAlso: AX=0010h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  2715. --------V-620023-----------------------------
  2716. INT 62 u - FGDRIVER v3.03 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  2717.     AX = 0023h
  2718. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  2719.           without an Enhanced Color Display
  2720. Note:    For FGDRIVER v1.10, this function was "FG_MOVE" (see AX=0068h);
  2721.       "FG_EGACHECK" was AX=0005h
  2722. SeeAlso: AX=00A2h
  2723. --------V-620024-----------------------------
  2724. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  2725.     AX = 0024h
  2726.     BX = horizontal semi-axis length in screen space units
  2727.     CX = vertical semi-axis length in screen space units
  2728. Notes:    For FGDRIVER v1.10, this function was "FG_MOVEREL" (see AX=0069h);
  2729.       "FG_ELLIPSE" was AX=002Dh
  2730.     This call is ignored in text modes
  2731.     The ellipse is centered at the current graphics cursor position
  2732. SeeAlso: AX=0006h,AX=000Dh,AX=0025h,AX=0076h,AX=0079h
  2733. --------V-620025-----------------------------
  2734. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  2735.     AX = 0025h
  2736.     BX = horizontal semi-axis length in screen space units
  2737.     CX = vertical semi-axis length in screen space units
  2738. Notes:    For FGDRIVER v1.10, this function was "FG_DRAW" (see AX=001Bh);
  2739.       "FG_ELLIPSEF" did not exist yet
  2740.     This call is ignored in text modes
  2741.     The ellipse is centered at the current graphics cursor position
  2742. SeeAlso: AX=0006h,AX=000Eh,AX=0024h,AX=0076h,AX=0078h
  2743. --------V-620026-----------------------------
  2744. INT 62 u - FGDRIVER v3.03 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  2745.     AX = 0026h
  2746. Note:    For FGDRIVER v1.10, this function was "FG_DRAWREL" (see AX=001Eh);
  2747.       "FG_ERASE" was AX=001Eh
  2748.     This function sets each pixel to 0 in graphics modes, each character
  2749.       cell to a blank with a gray foreground attribute in text modes
  2750. SeeAlso: AX=0027h,AX=0029h,AX=002Bh
  2751. --------V-620027-----------------------------
  2752. INT 62 u - FGDRIVER v3.03 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  2753.     AX = 0027h
  2754.     BX = delay (0000h = fastest possible fade-in)
  2755. Notes:    For FGDRIVER v1.10, this function was "FG_DASH" (see AX=0014h);
  2756.       "FG_FADEIN" was AX=0064h
  2757.     The current hidden page is copied to the current visible page in small
  2758.       random sections to produce a fade-in effect
  2759.     This call is ignored in text modes
  2760. SeeAlso: AX=0026h,AX=0028h,AX=0029h
  2761. --------V-620028-----------------------------
  2762. INT 62 u - FGDRIVER v3.03 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  2763.     AX = 0028h
  2764.     BX = delay (0000h = fastest possible fade-out)
  2765. Notes:    For FGDRIVER v1.10, this function was "FG_DASHREL" (see AX=0015h);
  2766.       "FG_FADEOUT" was AX=0065h
  2767.     The current visible page is filled with pixels of the current color in
  2768.       small random sections to give a fade-out effect
  2769.     This call is ignored in text modes
  2770. SeeAlso: AX=0026h,AX=0027h,AX=0029h
  2771. --------V-620029-----------------------------
  2772. INT 62 u - FGDRIVER v3.03 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  2773.     AX = 0029h
  2774. Desc:    fill the active video page with pixels of the current color (graphics
  2775.       modes) or the block character DBh with the current character
  2776.       attributes (text modes)
  2777. Note:    For FGDRIVER v1.10, this function was "FG_SETCLIP" (see AX=008Ch);
  2778.       "FG_FILLPAGE" did not exist yet
  2779. SeeAlso: AX=0026h,AX=0027h,AX=0028h
  2780. --------V-62002A-----------------------------
  2781. INT 62 u - FGDRIVER v3.03 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  2782.     AX = 002Ah
  2783.     ES:BX -> array containing image stored as a masking map (see AX=0051h)
  2784.     CX = number of pixel runs in masking map
  2785.     DX = width of masking map in pixels
  2786. Notes:    For FGDRIVER v1.10, this function was "FG_RECT" (see AX=0080h);
  2787.       "FG_FLIPMASK" was AX=0054h
  2788.     This call is ignored in text modes and in native EGA and VGA graphics
  2789.       modes
  2790.     The image is drawn with its lower left corner at the current graphics
  2791.       cursor position
  2792. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ch,AX=0086h,AX=008Ch,AX=00A5h
  2793. --------V-62002B-----------------------------
  2794. INT 62 u - FGDRIVER v3.03 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  2795.     AX = 002Bh
  2796.     BX = starting column
  2797.     CX = starting row
  2798. Desc:    fill the bounded region around the specified point (respecting clipping
  2799.       region) with the currrent color
  2800. Notes:    For FGDRIVER v1.10, this function was "FG_CLPRECT" (see AX=0011h);
  2801.       "FG_FLOOD" did not exist yet
  2802.     This function is ignored in text modes
  2803. SeeAlso: AX=0026h,AX=006Eh
  2804. --------V-62002C-----------------------------
  2805. INT 62 u - FGDRIVER v3.03 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  2806.     AX = 002Ch
  2807.     ES:BX -> mode-specific bitmap
  2808.     CX = width of bit map in bytes
  2809.     DX = height of bit map in pixel rows
  2810. Notes:    For FGDRIVER v1.10, this function was "FG_DRECT" (see AX=0021h);
  2811.        "FG_FLPIMAGE" was AX=004Ch
  2812.     This call is ignored in text modes
  2813.     The image is drawn with its lower left corner at the current graphics
  2814.       cursor position
  2815.     The current clipping region is used, extended to a byte boundary
  2816. SeeAlso: AX=0010h,AX=0022h,AX=002Ah,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  2817. --------V-62002D-----------------------------
  2818. INT 62 u - FGDRIVER v3.03 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  2819.     AX = 002Dh
  2820.     BX = desired character height in scan lines (8, 14, 16)
  2821. Notes:    For FGDRIVER v1.10, this function was "FG_ELLIPSE" (see AX=0024h);
  2822.        "FG_FONTSIZE" did not exist yet
  2823.     This call is ignored if the current mode is not a VGA or SVGA graphics
  2824.       mode, or the specified character height is not 8, 14, or 16
  2825. SeeAlso: AX=007Ch
  2826. --------V-62002E-----------------------------
  2827. INT 62 u - FGDRIVER v3.03 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  2828.     AX = 002Eh
  2829.     BX = page number (0000h-003Fh)
  2830. Return: AX = status (0000h,0001h,0007h,0009h) (see AX=0042h)
  2831. Note:    For FGDRIVER v1.10, this function was "FG_POLYGON" (see AX=0079h);
  2832.        "FG_FREEPAGE" was AX=0043h
  2833. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  2834. --------V-62002F-----------------------------
  2835. INT 62 u - FGDRIVER v3.03 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  2836.     AX = 002Fh
  2837. Return: AX = segment of active video page
  2838. Note:    For FGDRIVER v1.10, this function was "FG_PAINT" (see AX=006Eh);
  2839.        "FG_GETADDR" was AX=0044h
  2840. SeeAlso: AX=0036h,AX=008Fh
  2841. --------V-620030-----------------------------
  2842. INT 62 u - FGDRIVER v3.03 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  2843.     AX = 0030h
  2844.     BX = row
  2845.     CX = column
  2846. Return: AX = character attribute at specified location on active video page
  2847. Notes:    For FGDRIVER v1.10, this function was "FG_CIRCLE" (see AX=000Dh);
  2848.       "FG_GETATTR" was AX=0037h
  2849.     This call is ignored in graphics modes
  2850. SeeAlso: AX=000Bh,AX=0032h,AX=0034h,AX=008Ah
  2851. --------V-620031-----------------------------
  2852. INT 62 u - FGDRIVER v3.03 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  2853.     AX = 0031h
  2854.     ES:BX -> buffer for screen contents
  2855.     CX = leftmost column
  2856.     DX = rightmost column
  2857.     SI = top row
  2858.     DI = bottom row
  2859. Notes:    For FGDRIVER v1.10, this function was unused, and "FG_GETBLOCK" did not
  2860.       exist yet
  2861.     In text modes, coordinates are character positions; in graphics modes,
  2862.       they are defined in screen space, and the left and right edges are
  2863.       adjusted to a byte boundary if necessary
  2864.     Use "FG_IMAGESIZ" (see AX=004Bh) to determine the required buffer size
  2865. SeeAlso: AX=0038h,AX=004Bh,AX=007Dh
  2866. --------V-620032-----------------------------
  2867. INT 62 u - FGDRIVER v3.03 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  2868.     AX = 0032h
  2869.     BX = row
  2870.     CX = column
  2871. Return: AX = character at specified location on active video page
  2872. Notes:    For FGDRIVER v1.10, this function was "FG_TEXT" (see AX=00A8h);
  2873.       "FG_GETCHAR" was AX=0038h
  2874.     This call is ignored in graphics modes
  2875. SeeAlso: AX=000Bh,AX=0030h,AX=007Ch,AX=008Ah,AX=00A8h
  2876. --------V-620033-----------------------------
  2877. INT 62 u - FGDRIVER v3.03 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  2878.     AX = 0033h
  2879. Return: DX:AX = number of clock ticks since midnight
  2880. Note:    For FGDRIVER v1.10, this function was "FG_LOCATE" (see AX=0055h);
  2881.       "FG_GETCLOCK" was AX=0099h
  2882. SeeAlso: INT 1A/AH=00h
  2883. --------V-620034-----------------------------
  2884. INT 62 u - FGDRIVER v3.03 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  2885.     AX = 0034h
  2886. Return: AX = current text attribute or color index (graphics modes)
  2887. Note:    For FGDRIVER v1.10, this function was "FG_WHERE" (see AX=00AFh);
  2888.       "FG_GETCOLOR" was AX=0015h
  2889. SeeAlso: AX=000Bh,AX=0030h,AX=008Ah
  2890. --------V-620035-----------------------------
  2891. INT 62 u - FGDRIVER v3.03 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  2892.     AX = 0035h
  2893.     CX = number of DAC registers to return (0001h to 0100h)
  2894.     DX = starting DAC register number (0000h to 00FFh)
  2895.     ES:BX -> buffer for DAC red/green/blue triples
  2896. Notes:    For FGDRIVER v1.10, this function was "FG_CHGATTR" (see AX=000Bh);
  2897.       "FG_GETDACS" was AX=00A4h
  2898.     The register number wraps back to zero after FFh
  2899. SeeAlso: AX=0042h,AX=006Fh,AX=008Eh
  2900. --------V-620036-----------------------------
  2901. INT 62 u - FGDRIVER v3.03 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  2902.     AX = 0036h
  2903.     ES:BX -> variable pointer record (see below)
  2904.     CX = page number (00h-3Fh)
  2905. Notes:    For FGDRIVER v1.10, this function was "FG_CHGTEXT" (see AX=000Ch);
  2906.       "FG_GETENTRY" did not exist yet
  2907.     Page addresses are segments for pages stored in conventional memory
  2908.       (including physical and virtual pages), and EMS or XMS handles for
  2909.       pages stored in EMS or XMS
  2910. SeeAlso: AX=0000h,AX=008Fh
  2911.  
  2912. Format of variable pointer record:
  2913. Offset    Size    Description
  2914.  00h    WORD    segment of WORD buffer for page address
  2915.  02h    WORD    offset of WORD buffer for page address
  2916.  04h    WORD    segment of WORD buffer for page type
  2917.  06h    WORD    offset of WORD buffer for page type
  2918.  
  2919. Values for page type:
  2920.  0000h    unallocated
  2921.  0001h    physical
  2922.  0002h    virtual
  2923.  0003h    logical page, stored in expanded memory (EMS)
  2924.  0004h    logical page, stored in extended memory (XMS)
  2925.  0005h    logical page, stored in conventional memory
  2926. --------V-620037-----------------------------
  2927. INT 62 u - FGDRIVER v3.03 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  2928.     AX = 0037h
  2929. Return: AX = current hidden video page number (0000h-003Fh)
  2930. Note:    For FGDRIVER v1.10, this function was "FG_GETATTR" (see AX=0030h);
  2931.       "FG_GETHPAGE" was AX=0040h
  2932. SeeAlso: AX=0040h,AX=0043h,AX=0091h
  2933. --------V-620038-----------------------------
  2934. INT 62 u - FGDRIVER v3.03 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  2935.     AX = 0038h
  2936.     ES:BX -> buffer for video mode-specific bitmap
  2937.     CX = width of bitmap in bytes
  2938.     DX = height of bitmap in pixel rows
  2939. Note:    For FGDRIVER v1.10, this function was "FG_GETCHAR" (see AX=0032h);
  2940.       "FG_GETIMAGE" was AX=0048h
  2941. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=007Eh,AX=0085h
  2942. --------V-620039-----------------------------
  2943. INT 62 u - FGDRIVER v3.03 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  2944.     AX = 0039h
  2945.     BX = color index (0000h to 00FFh)
  2946. Return: AX = color value for specified color index
  2947. Notes:    For FGDRIVER v1.10, this function was unused;"FG_GETINDEX" was AX=0016h
  2948.     This call returns the value passed to it in text and 256-color
  2949.       graphics modes
  2950. SeeAlso: AX=0016h,AX=0034h
  2951. --------V-62003A-----------------------------
  2952. INT 62 u - FGDRIVER v3.03 - "FG_GETKEY" - GET NEXT KEYSTROKE
  2953.     AX = 003Ah
  2954.     ES:BX -> variable pointer record (see below)
  2955. Return: (after next keystroke if no typeahead) variables updated
  2956. Note:    For FGDRIVER v1.10, this function was unused; "FG_GETKEY" was AX=006Eh
  2957. SeeAlso: AX=000Ah,AX=0051h,AX=0054h,AX=00ADh,INT 16/AH=00h
  2958.  
  2959. Format of variable pointer record:
  2960. Offset    Size    Description
  2961.  00h    WORD    segment of BYTE buffer for ASCII keycode
  2962.  02h    WORD    offset of BYTE buffer for ASCII keycode
  2963.  04h    WORD    segment of BYTE buffer for extended keycode
  2964.  06h    WORD    offset of BYTE buffer for extended keycode
  2965. --------V-62003B-----------------------------
  2966. INT 62 u - FGDRIVER v3.03 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  2967.     AX = 003Bh
  2968. Return: AX = number of text rows on screen in current video mode
  2969. Note:    For FGDRIVER v1.10, this function was unused;"FG_GETLINES" was AX=0010h
  2970. SeeAlso: AX=0092h,AX=00A2h
  2971. --------V-62003C-----------------------------
  2972. INT 62 u - FGDRIVER v3.03 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  2973.     AX = 003Ch
  2974.     ES:BX -> buffer for video mode-independent bitmap
  2975.     CX = width of bitmap in bytes
  2976.     DX = height of bitmap in pixel rows
  2977. Return: each bit in bitmap is set if corresponding pixel is of the current
  2978.       color, cleared otherwise
  2979. Notes:    For FGDRIVER v1.10, this function was "FG_GETPAGE" (see AX=0040h);
  2980.       "FG_GETMAP" was AX=0046h
  2981.     This call is ignored in text modes
  2982. SeeAlso: AX=0010h,AX=001Ch,AX=0022h
  2983. --------V-62003D-----------------------------
  2984. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  2985.     AX = 003Dh
  2986. Return: AX = maximum X coordinate in screen space
  2987.         (or character space if in text mode)
  2988. Note:    For FGDRIVER v1.10, this function was "FG_SETPAGE" (see AX=0095h);
  2989.        "FG_GETMAXX" was AX=000Ah
  2990. SeeAlso: AX=003Eh,AX=00A1h
  2991. --------V-62003E-----------------------------
  2992. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  2993.     AX = 003Eh
  2994. Return: AX = maximum Y coordinate in screen space
  2995.         (or character space if in text mode)
  2996. Note:    For FGDRIVER v1.10, this function was "FG_GETVPAGE" (see AX=0043h);
  2997.        "FG_GETMAXY" was AX=000Bh
  2998. SeeAlso: AX=003Dh,AX=00A1h
  2999. --------V-62003F-----------------------------
  3000. INT 62 u - FGDRIVER v3.03 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  3001.     AX = 003Fh
  3002.     ES:BX -> WORD ???
  3003. Return: AX = current video mode number
  3004. Note:    For FGDRIVER v1.10, this function was "FG_SETVPAGE" (see AX=0098h);
  3005.        "FG_GETMODE" was AX=0000h
  3006. SeeAlso: AX=0093h
  3007. --------V-620040-----------------------------
  3008. INT 62 u - FGDRIVER v3.03 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  3009.     AX = 0040h
  3010. Return: AX = active video page (0000h-003Fh)
  3011. Note:    For FGDRIVER v1.10, this function was "FG_GETHPAGE" (see AX=0037h);
  3012.        "FG_GETPAGE" was AX=003Ch
  3013. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0095h
  3014. --------V-620041-----------------------------
  3015. INT 62 u - FGDRIVER v3.03 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  3016.     AX = 0041h
  3017.     BX = column in screen space
  3018.     CX = row in screen space
  3019. Return: AX = color value of pixel (0 to num_colors-1)
  3020.         0000h in text modes
  3021. Note:    For FGDRIVER v1.10, this function was "FG_SETHPAGE" (see AX=0091h);
  3022.        "FG_GETPIXEL" was AX=0020h
  3023. SeeAlso: AX=0030h,AX=0032h,AX=0076h,AX=0077h
  3024. --------V-620042-----------------------------
  3025. INT 62 u - FGDRIVER v3.03 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  3026.     AX = 0042h
  3027.     ES:BX -> variable pointer record (see below)
  3028.     CX = DAC register number
  3029. Return: variables updated
  3030. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCATE" (see AX=0000h);
  3031.       "FG_GETRGB" was AX=001Ch
  3032.     This call is ignored in text modes and CGA/EGA video modes (since
  3033.       they do not use DAC registers)
  3034. SeeAlso: AX=0035h,AX=006Fh,AX=008Eh
  3035.  
  3036. Format of variable pointer record:
  3037. Offset    Size    Description
  3038.  00h    WORD    segment of WORD buffer for red component of DAC register
  3039.  02h    WORD    offset of WORD buffer for red component
  3040.  04h    WORD    segment of WORD buffer for green component of DAC register
  3041.  06h    WORD    offset of WORD buffer for green component
  3042.  08h    WORD    segment of WORD buffer for blue component of DAC register
  3043.  0Ah    WORD    offset of WORD buffer for blue component
  3044. --------V-620043-----------------------------
  3045. INT 62 u - FGDRIVER v3.03 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  3046.     AX = 0043h
  3047. Return: AX = visible video page (0000h-003Fh)
  3048. Note:    For FGDRIVER v1.10, this function was "FG_FREEPAGE" (see AX=002Eh);
  3049.       "FG_GETVPAGE" was AX=003Eh
  3050. SeeAlso: AX=0037h,AX=0040h,AX=0098h
  3051. --------V-620044-----------------------------
  3052. INT 62 u - FGDRIVER v3.03 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  3053.     AX = 0044h
  3054.     BX = joystick number (0001h or 0002h)
  3055. Return: AX = horizontal position of joystick
  3056.         FFFFh if joystick uninitialized or not present
  3057. Notes:    For FGDRIVER v1.10, this function was "FG_GETADDR" (see AX=002Fh);
  3058.       "FG_GETXJOY" was AX=0076h
  3059.     The actual coordinates are processor- and joystick-dependent
  3060.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3061. SeeAlso: AX=0009h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  3062. --------V-620045-----------------------------
  3063. INT 62 u - FGDRIVER v3.03 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  3064.     AX = 0045h
  3065. Return: AX = screen space X coordinate of graphics cursor position
  3066. Note:    For FGDRIVER v1.10, this function was "FG_RESIZE" (see AX=0082h);
  3067.       "FG_GETXPOS" was AX=0021h
  3068. SeeAlso: AX=0047h,AX=0068h,AX=0069h
  3069. --------V-620046-----------------------------
  3070. INT 62 u - FGDRIVER v3.03 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  3071.     AX = 0046h
  3072.     BX = joystick number (0001h or 0002h)
  3073. Return: AX = vertical position of joystick
  3074.         FFFFh if joystick uninitialized or not present
  3075. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAP" (see AX=003Ch);
  3076.       "FG_GETYJOY" was AX=0077h
  3077.     The actual coordinates are processor- and joystick-dependent
  3078.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  3079. SeeAlso: AX=0009h,AX=0044h,AX=004Dh,AX=0050h,AX=0061h
  3080. --------V-620047-----------------------------
  3081. INT 62 u - FGDRIVER v3.03 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  3082.     AX = 0047h
  3083. Return: AX = screen space Y coordinate of graphics cursor position
  3084. Note:    For FGDRIVER v1.10, this function was "FG_DRAWMAP" (see AX=001Ch);
  3085.       "FG_GETYPOS" was AX=0022h
  3086. SeeAlso: AX=0045h,AX=0068h,AX=0069h
  3087. --------V-620048-----------------------------
  3088. INT 62 u - FGDRIVER v3.03 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  3089.     AX = 0048h
  3090. Notes:    For FGDRIVER v1.10, this function was "FG_GETIMAGE" (see AX=0038h);
  3091.       "FG_HUSH" was AX=008Eh
  3092.     This function immediately stops any sounds started with "FG_MUSICB",
  3093.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  3094.       is playing
  3095. SeeAlso: AX=0049h,AX=006Bh,AX=009Eh,AX=00ABh
  3096. --------V-620049-----------------------------
  3097. INT 62 u - FGDRIVER v3.03 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  3098.     AX = 0049h
  3099. Program: FGDRIVER is the external video driver for the shareware
  3100.       Fastgraph/Light by Ted Gruber Software
  3101. Notes:    For FGDRIVER v1.10, this function was "FG_DRWIMAGE" (see AX=0022h);
  3102.       "FG_HUSHNEXT" was AX=008Fh
  3103.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  3104.       or "FG_VOICES" after the current repetition completes; it is ignored
  3105.       unless asynchronous sound is continuous
  3106. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3107. --------V-62004A-----------------------------
  3108. INT 62 u - FGDRIVER v3.03 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  3109.     AX = 004Ah
  3110.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  3111.           images
  3112.     CX = size of buffer in bytes or 0000h to use internal buffer
  3113. Notes:    For FGDRIVER v1.10, this function was "FG_CLPIMAGE" (see AX=0010h);
  3114.       "FG_IMAGEBUF" did not exist yet
  3115.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  3116.       application to define a larger buffer which will typically speed
  3117.       processing
  3118. SeeAlso: AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3119. --------V-62004B-----------------------------
  3120. INT 62 u - FGDRIVER v3.03 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  3121.     AX = 004Bh
  3122.     BX = image width in pixels
  3123.     CX = image height in pixels
  3124. Note:    For FGDRIVER v1.10, this function was "FG_REVIMAGE" (see AX=0085h);
  3125.       "FG_IMAGESIZ" was AX=0062h
  3126. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  3127. SeeAlso: AX=0031h,AX=007Dh
  3128. --------V-62004C-----------------------------
  3129. INT 62 u - FGDRIVER v3.03 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  3130.     AX = 004Ch
  3131. Return: AX = status
  3132.         0000h successful
  3133.         FFFFh expanded memory manager inaccessible or not installed
  3134. Notes:    For FGDRIVER v1.10, this function was "FG_FLPIMAGE" (see AX=002Ch);
  3135.       "FG_INITEMS" was AX=00A0h
  3136. SeeAlso: AX=0002h,AX=004Eh
  3137. --------V-62004D-----------------------------
  3138. INT 62 u - FGDRIVER v3.03 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  3139.     AX = 004Dh
  3140.     BX = joystick number (0001h or 0002h)
  3141. Return: AX = status
  3142.         0000h successful
  3143.         FFFFh joystick not connected or no game port
  3144. Notes:    For FGDRIVER v1.10, this function was "FG_DISPLAY" (see AX=0019h);
  3145.       "FG_INITJOY" was AX=0075h
  3146.     Fastgraph assumes that the requested joystick is centered at the time
  3147.       this function is called
  3148. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=0050h,AX=0061h
  3149. --------V-62004E-----------------------------
  3150. INT 62 u - FGDRIVER v3.03 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  3151.     AX = 004Eh
  3152. Return: AX = status
  3153.         0000h successful
  3154.         FFFFh extended memory manager inaccessible or not installed
  3155. Note:    For FGDRIVER v1.10, this function was "FG_DISPLAYP" (see AX=001Ah);
  3156.       "FG_INITXMS" was AX=00A1h
  3157. SeeAlso: AX=0003h,AX=004Ch
  3158. --------V-62004F-----------------------------
  3159. INT 62 u - FDGRIVER v3.03 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  3160.     AX = 004Fh
  3161.     ES:BX -> vertex array
  3162.     CX = number of vertices
  3163.     DX = screen space column of point to test
  3164.     SI = screen space row of point to test
  3165. Return: AX = result
  3166.         0000h point is outside polygon
  3167.         0001h point is inside polygon
  3168.         undefined if not a convex polygon
  3169. Note:    For FGDRIVER v1.10, this function was "FG_DISPFILE" (see AX=0018h);
  3170.       "FG_INSIDE" did not exist yet
  3171. SeeAlso: AX=0078h,AX=0079h,AX=007Ah
  3172. --------V-620050-----------------------------
  3173. INT 62 u - FGDRIVER v3.03 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  3174.     AX = 0050h
  3175.     CX = joystick number (0001h or 0002h)
  3176.     ES:BX -> variable pointer record (see below)
  3177. Notes:    For FGDRIVER v1.10, this function was "FG_PATTERN" (see AX=0072h);
  3178.       "FG_INTJOY" was AX=0079h
  3179.     If the indicated joystick has not been initialized with AX=0075h, both
  3180.       the button code and joystick position will be set to 00h
  3181.     If either button is pressed, a button code of 0Dh is returned;
  3182.       otherwise, a button code of 00h is returned
  3183. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=004Dh,AX=0061h
  3184.  
  3185. Format of variable pointer record:
  3186. Offset    Size    Description
  3187.  00h    WORD    segment of BYTE buffer for button code
  3188.  02h    WORD    offset of BYTE buffer for button code
  3189.  04h    WORD    segment of BYTE buffer for joystick position
  3190.  06h    WORD    offset of BYTE buffer for joystick position
  3191. --------V-620051-----------------------------
  3192. INT 62 u - FGDRIVER v3.03 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  3193.     AX = 0051h
  3194.     ES:BX -> variable pointer record (see below)
  3195. Return: variables updated
  3196. Notes:    For FGDRIVER v1.10, this function was "FG_DRAWMASK" (see AX=001Dh);
  3197.       "FG_INTKEY" was AX=006Fh
  3198.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  3199.       are set to 00h
  3200. SeeAlso: AX=000Ah,AX=003Ah,AX=0054h,AX=00ADh,INT 16/AH=01h
  3201.  
  3202. Format of variable pointer record:
  3203. Offset    Size    Description
  3204.  00h    WORD    segment of BYTE buffer for ASCII keycode
  3205.  02h    WORD    offset of BYTE buffer for ASCII keycode
  3206.  04h    WORD    segment of BYTE buffer for extended keycode
  3207.  06h    WORD    offset of BYTE buffer for extended keycode
  3208. --------V-620052-----------------------------
  3209. INT 62 u - FGDRIVER v3.03 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  3210.     AX = 0052h
  3211.     BX = horizontal justification
  3212.           (00h centered, 01h right-justified, FFh left-justified)
  3213.     CX = vertical justification
  3214.           (00h centered, 01h top of characters, FFh bottom of chars)
  3215. Note:    For FGDRIVER v1.10, this function was "FG_CLIPMASK" (see AX=000Fh);
  3216.       "FG_JUSTIFY" did not exist yet
  3217. SeeAlso: AX=000Ch,AX=002Dh,AX=007Ch
  3218. --------V-620053-----------------------------
  3219. INT 62 u - FGDRIVER v3.03 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  3220.     AX = 0053h
  3221.     BX = new state (0000h disabled, 0001h enabled)
  3222. Notes:    For FGDRIVER v1.10, this function was "FG_REVMASK" (see AX=0086h);
  3223.       "FG_KBINIT" did not exist yet
  3224.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  3225.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  3226.       services become unavailable
  3227. SeeAlso: AX=0054h
  3228. --------V-620054-----------------------------
  3229. INT 62 u - FGDRIVER v3.03 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  3230.     AX = 0054h
  3231.     BX = scan code of desired key
  3232. Return: AX = state
  3233.         0000h key is not pressed
  3234.         0001h key is currently pressed
  3235. Notes:    For FGDRIVER v1.10, this function was "FG_FLIPMASK" (see AX=002Ah);
  3236.       "FG_KBTEST" did not exist yet
  3237.     The low-level keyboard handler must have been enabled with AX=0053h
  3238. SeeAlso: AX=0053h,INT 16/AH=01h
  3239. --------V-620055-----------------------------
  3240. INT 62 u - FGDRIVER v3.03 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  3241.     AX = 0055h
  3242.     BX = row
  3243.     CX = column
  3244. Notes:    For FGDRIVER v1.10, this function was unused; "FG_LOCATE" was AX=0033h
  3245.     There are only eight text cursors shared by successive groups of
  3246.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  3247.       share the second, etc)
  3248. SeeAlso: AX=0045h,AX=0047h,AX=0068h,AX=00AFh
  3249. --------V-620056-----------------------------
  3250. INT 62 u - FGDRIVER v3.03 - UNUSED
  3251.     AX = 0056h
  3252. Return: AX destroyed
  3253. --------V-620057-----------------------------
  3254. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  3255.     AX = 0057h
  3256.     BX = left edge in screen space units
  3257.     CX = right edge in screen space units
  3258.     DX = top edge in screen space units
  3259.     SI = bottom edge in screen space units
  3260.     ES:DI -> ASCIZ filename of PCX file to create
  3261. Return: AX = status
  3262.         0000h successful
  3263.         0001h file not created
  3264. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPCX" was AX=0061h
  3265.     The PCX file is created from the specified region of the active video
  3266.       page; the left and right edges are adjusted to a byte boundary if
  3267.       necessary
  3268.     If the specified file already exists, it is overwritten
  3269.     This call is ignored in text and Hercules low-resolution graphics modes
  3270. SeeAlso: AX=004Ah,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3271. --------V-620058-----------------------------
  3272. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  3273.     AX = 0058h
  3274.     BX = left edge in screen space units
  3275.     CX = right edge in screen space units
  3276.     DX = top edge in screen space units
  3277.     SI = bottom edge in screen space units
  3278.     ES:DI -> ASCIZ filename of PPR file to create
  3279. Return: AX = status
  3280.         0000h successful
  3281.         0001h file not created
  3282. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPPR" did not
  3283.       exist yet
  3284.     The PPR file is created from the specified region of the active video
  3285.       page; the left and right edges are adjusted to byte boundaries if
  3286.       necessary
  3287.     If the specified file already exists, it is overwritten
  3288.     This call is ignored in text modes
  3289. SeeAlso: AX=004Ah,AX=0057h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  3290. --------V-620059-----------------------------
  3291. INT 62 u - FGDRIVER v3.03 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  3292.     AX = 0059h
  3293.     BX = left edge in screen space units
  3294.     CX = right edge in screen space units
  3295.     DX = top edge in screen space units
  3296.     SI = bottom edge in screen space units
  3297.     ES:DI -> ASCIZ filename of SPR file to create
  3298. Return: AX = status
  3299.         0000h successful
  3300.         0001h file not created
  3301. Note:    For FGDRIVER v1.10, this function was unused; "FG_MAKESPR" did not
  3302.       exist yet
  3303.     The SPR file is created from the specified region of the active video
  3304.       page; the left and right edges are adjusted to byte boundaries if
  3305.       necessary
  3306.     If the specified file already exists, it is overwritten
  3307.     This call is ignored in text modes
  3308. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=009Ah,AX=009Bh,AX=009Ch
  3309. --------V-62005A-----------------------------
  3310. INT 62 u - FGDRIVER v3.03 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  3311.     AX = 005Ah
  3312.     BX = red component
  3313.     CX = green component
  3314.     DX = blue component
  3315. Return: AX = mode-specific palette value corresponding to specified components
  3316. Notes:    For FGDRIVER v1.10, this function was "FG_SAVE" (see AX=0087h);
  3317.       "FG_MAPRGB" was AX=001Dh
  3318.     This function is only meaningful in 16-color graphics modes
  3319. SeeAlso: AX=0042h,AX=0096h
  3320. --------V-62005B-----------------------------
  3321. INT 62 u - FGDRIVER v3.03 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  3322.     AX = 005Bh
  3323. Return: AX = delay units per clock tick (processor-dependent)
  3324. Notes:    For FGDRIVER v1.10, this function was "FG_RESTORE" (see AX=0083h);
  3325.       "FG_MEASURE" was AX=0098h
  3326.     These delay units are used by "FG_STALL" (see AX=009Fh)
  3327. SeeAlso: AX=009Fh
  3328. --------V-62005C-----------------------------
  3329. INT 62 u - FGDRIVER v3.03 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  3330.     AX = 005Ch
  3331. Return: DX:AX = number of bytes of conventional memory available
  3332. Note:    For FGDRIVER v1.10, this function was "FG_TRANSFER" (see AX=00A9h);
  3333.       "FG_MEMAVAIL" was AX=009Bh
  3334. SeeAlso: AX=004Ch,AX=005Dh
  3335. --------V-62005D-----------------------------
  3336. INT 62 u - FGDRIVER v3.03 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  3337.     AX = 005Dh
  3338. Return: AX = size of video memory in KB
  3339. Notes:    For FGDRIVER v1.10, this function was "FG_TCXFER" (see AX=00A6h);
  3340.       "FG_MEMORY" did not exist yet
  3341.     You must first call "FG_SVGAINIT" (see AX=00A1h) before using this
  3342.       function
  3343. SeeAlso: AX=005Ch
  3344. --------V-62005E-----------------------------
  3345. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  3346.     AX = 005Eh
  3347.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  3348.               -1=left release, -2=right release, -3=middle release)
  3349.     ES:BX -> variable pointer record (see below)
  3350. Return: variables updated
  3351. Notes:    For FGDRIVER v1.10, this function was "FG_TCMASK" (see AX=00A5h);
  3352.       "FG_MOUSEBUT" was AX=007Ch
  3353.     This function returns the count of presses or releases since the last
  3354.       call to this function; if the count is zero, row and column will
  3355.       also be zero
  3356. SeeAlso: AX=005Fh,AX=0061h,AX=0064h
  3357.  
  3358. Format of variable pointer record:
  3359. Offset    Size    Description
  3360.  00h    WORD    segment of WORD buffer for press/release count
  3361.  02h    WORD    offset of WORD buffer for press/release count
  3362.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  3363.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  3364.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  3365.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  3366. --------V-62005F-----------------------------
  3367. INT 62 u - FGDRIVER v3.03 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  3368.     AX = 005Fh
  3369.     BX = screen mask
  3370.     CX = cursor mask
  3371. Notes:    For FGDRIVER v1.10, this function was "FG_COPYPAGE" (see AX=0012h);
  3372.       "FG_MOUSECUR" was AX=007Eh
  3373.     This call is ignored in graphics modes
  3374. SeeAlso: AX=0065h,AX=0067h
  3375. --------V-620060-----------------------------
  3376. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  3377.     AX = 0060h
  3378.     ES:BX -> ASCIZ filename
  3379.     CX = flags
  3380.         bit 0: use current palette rather than PCX file's palette
  3381.         bits 1-15 reserved (0)
  3382. Return: AX = status
  3383.         0000h success
  3384.         0001h file not found
  3385.         0002h file is not a valid PCX file
  3386. Notes:    This call is ignored in text modes and Hercules low-resolution graphics
  3387.     The image is displayed with its upper left corner at the current
  3388.       graphics cursor position
  3389. SeeAlso: AX=009Ah
  3390. --------V-620060-----------------------------
  3391. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  3392.     AX = 0060h
  3393. Notes:    For FGDRIVER v1.10, this function was "FG_DISPPCX", which no longer
  3394.       exists; "FG_MOUSEFIN" did not exist yet
  3395.     This function should be called before switching back to text mode if
  3396.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  3397. SeeAlso: AX=0061h
  3398. --------V-620061-----------------------------
  3399. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  3400.     AX = 0061h
  3401. Return: AX = status
  3402.         0002h two-button mouse
  3403.         0003h three-button mouse
  3404.         FFFFh initialization failed
  3405. Notes:    For FGDRIVER v1.10, this function was "FG_MAKEPCX" (see AX=0057h);
  3406.       "FG_MOUSEINI" was AX=007Ah
  3407.     After this call, the mouse cursor is invisible
  3408. SeeAlso: AX=0060h"3.03",AX=0062h,AX=0066h
  3409. --------V-620062-----------------------------
  3410. INT 62 u - FGDRIVER v3.03 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  3411.     AX = 0062h
  3412.     BX = left-most position allowed for mouse cursor
  3413.     CX = right-most position allowed
  3414.     DX = top-most position allowed
  3415.     SI = bottom-most position allowed
  3416. Note:    For FGDRIVER v1.10, this function was "FG_IMAGESIZ" (see AX=004Bh);
  3417.       "FG_MOUSELIM" was AX=0080h
  3418. SeeAlso: AX=0061h,AX=0063h,INT 33/AX=0007h,INT 33/AX=0008h
  3419. --------V-620063-----------------------------
  3420. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  3421.     AX = 0063h
  3422.     BX = new column
  3423.     CX = new row
  3424. Notes:    For FGDRIVER v1.10, this function was unused;"FG_MOUSEMOV" was AX=0081h
  3425.     This function will not move the mouse cursor outside the bounding box
  3426.       specified with AX=0080h
  3427. SeeAlso: AX=0062h,AX=0064h,INT 33/AX=0004h
  3428. --------V-620064-----------------------------
  3429. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  3430.     AX = 0064h
  3431.     ES:BX -> variable pointer record (see below)
  3432. Notes:    For FGDRIVER v1.10, this function was "FG_FADEIN" (see AX=0027h);
  3433.       "FG_MOUSEPOS" was AX=007Dh
  3434. SeeAlso: AX=0063h
  3435.  
  3436. Format of variable pointer record:
  3437. Offset    Size    Description
  3438.  00h    WORD    segment of WORD buffer for mouse column
  3439.  02h    WORD    offset of WORD buffer for mouse column
  3440.  04h    WORD    segment of WORD buffer for mouse row
  3441.  06h    WORD    offset of WORD buffer for mouse row
  3442.  08h    WORD    segment of WORD buffer for button status
  3443.  0Ah    WORD    offset of WORD buffer for button status
  3444. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  3445. --------V-620065-----------------------------
  3446. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  3447.     AX = 0065h
  3448.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  3449.     CX = X offset of hot spot from upper left corner
  3450.     DX = Y offset of hot spot from upper left corner
  3451. Notes:    For FGDRIVER v1.10, this function was "FG_FADEOUT" (see AX=0028h);
  3452.       "FG_MOUSEPTR" was AX=007Fh
  3453.     This call is ignored in text modes
  3454. SeeAlso: AX=005Fh,INT 33/AX=0009h
  3455. --------V-620066-----------------------------
  3456. INT 62 u - FGDRIVER v3.03 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  3457.     AX = 0066h
  3458.     BX = horizontal mickeys per eight pixels of movement (default 16)
  3459.     CX = vertical mickeys per eight pixels of movement (default 16)
  3460. Note:    For FGDRIVER v1.10, this function was "FG_PAN" (see AX=0071h);
  3461.       "FG_MOUSESPD" was AX=0082h
  3462. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  3463. --------V-620067-----------------------------
  3464. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  3465.     AX = 0067h
  3466.     BX = new state (0000h invisible, 0001h visible)
  3467. Note:    For FGDRIVER v1.10, this function was "FG_SCROLL" (see AX=0089h);
  3468.       "FG_MOUSEVIS" was AX=007Bh
  3469. SeeAlso: AX=0061h,INT 33/AX=0001h,INT 33/AX=0002h
  3470. --------V-620068-----------------------------
  3471. INT 62 u - FGDRIVER v3.03 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  3472.     AX = 0068h
  3473.     BX = new column
  3474.     CX = new row
  3475. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVE" was AX=0023h
  3476.     This call is ignored in text modes
  3477. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0063h,AX=0069h,AX=00AFh
  3478. --------V-620069-----------------------------
  3479. INT 62 u - FGDRIVER v3.03 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  3480.     AX = 0069h
  3481.     BX = column offset
  3482.     CX = row offset
  3483. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVEREL" was AX=0024h
  3484.     This call is ignored in text modes
  3485. SeeAlso: AX=0045h,AX=0047h,AX=0068h
  3486. --------V-62006A-----------------------------
  3487. INT 62 u - FGDRIVER v3.03 - "FG_MUSIC" - PLAY SERIES OF NOTES
  3488.     AX = 006Ah
  3489.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3490. Return: after music completed
  3491. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSIC" was AX=008Ch
  3492.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3493.       AX=008Dh) is already in progress
  3494. SeeAlso: AX=006Bh,AX=009Dh,AX=00AAh
  3495. --------V-62006B-----------------------------
  3496. INT 62 u - FGDRIVER v3.03 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  3497.     AX = 006Bh
  3498.     CX = number of repetitions (negative = continuous play)
  3499.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  3500. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSICB" was AX=008Dh
  3501.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  3502.       AX=008Dh) is already in progress
  3503. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3504. --------V-62006C-----------------------------
  3505. INT 62 u - FGDRIVER v3.03 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  3506.     AX = 006Ch
  3507. Return: AX = NumLock state (0000h off, 0001h on)
  3508. Note:    For FGDRIVER v1.10, this function was unused; "FG_NUMLOCK" was AX=0072h
  3509. SeeAlso: AX=000Ah,AX=0088h,AX=008Bh,AX=0094h
  3510. --------V-62006D-----------------------------
  3511. INT 62 u - FGDRIVER v3.03 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  3512.     AX = 006Dh
  3513. Return: DX:AX = page size in bytes
  3514. Note:    For FGDRIVER v1.10, this function was "FG_WAITKEY" (see AX=00ADh);
  3515.       "FG_PAGESIZE" did not exist yet
  3516. SeeAlso: AX=005Dh
  3517. --------V-62006E-----------------------------
  3518. INT 62 u - FGDRIVER v3.03 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  3519.     AX = 006Eh
  3520.     BX = column
  3521.     CX = row
  3522. Notes:    For FGDRIVER v1.10, this function was "FG_GETKEY" (see AX=003Ah);
  3523.        "FG_PAINT" was AX=002Fh
  3524.     This function fills an arbitrary closed region around the specified
  3525.       point with the current color; the screen edges are not considered
  3526.       region boundaries
  3527.     This call is ignored in text modes
  3528. SeeAlso: AX=002Bh
  3529. --------V-62006F-----------------------------
  3530. INT 62 u - FGDRIVER v3.03 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  3531.     AX = 006Fh
  3532. ---CGA 4-color graphics---
  3533.     BX = CGA paletee number
  3534.     CX = background color
  3535. ---CGA 2-color graphics---
  3536.     BX ignored
  3537.     CX = foreground color
  3538. ---16-color graphics---
  3539.     BX = palette register number
  3540.     CX = palette value
  3541. ---256-color graphics---
  3542.     BX = DAC register number
  3543.     CX =  DAC value
  3544. Notes:    For FGDRIVER v1.10, this function was "FG_INTKEY" (see AX=0051h);
  3545.        "FG_PALETTE" was AX=0017h
  3546.     This function is ignored in text modes and Hercules graphics modes
  3547.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  3548. SeeAlso: AX=0035h,AX=0042h,AX=0070h,AX=008Eh
  3549. --------V-620070-----------------------------
  3550. INT 62 u - FGDRIVER v3.03 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  3551.     AX = 0070h
  3552.     ES:BX -> array of 16 WORDs containing values for palette registers
  3553.         (or first 16 DAC registers in 256-color modes)
  3554. Notes:    For FGDRIVER v1.10, this function was "FG_CAPSLOCK" (see AX=000Ah);
  3555.        "FG_PALETTES" was AX=0018h
  3556.     This function is ignored in text modes, CGA and Hercules graphics modes
  3557. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,AX=008Eh
  3558. --------V-620071-----------------------------
  3559. INT 62 u - FGDRIVER v3.03 - "FG_PAN" - SET SCREEN ORIGIN
  3560.     AX = 0071h
  3561.     BX = new column for screen origin
  3562.     CX = new row for screen origin
  3563. Note:    For FGDRIVER v1.10, this function was "FG_SETCAPS" (see AX=008Bh);
  3564.        "FG_PAN" was AX=0066h
  3565. SeeAlso: AX=0095h
  3566. --------V-620072-----------------------------
  3567. INT 62 u - FGDRIVER v3.03 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  3568.     AX = 0072h
  3569.     BX = index of pattern to define
  3570.     CX = number of predefined display pattern
  3571. Notes:    For FGDRIVER v1.10, this function was "FG_NUMLOCK" (see AX=006Ch);
  3572.        "FG_PATTERN" was AX=0050h
  3573.     When displaying a pixel run map, Fastgraph uses the pattern associated
  3574.       with each color index rather than displaying the actual color
  3575.     This call has no effect in text and 256-color graphics modes
  3576. SeeAlso: AX=0021h,AX=0039h
  3577. --------V-620073-----------------------------
  3578. INT 62 u - FGDRIVER v3.03 - "FG_PCXHEAD" - GET PCX FILE HEADER
  3579.     AX = 0073h
  3580.     ES:BX -> variable pointer record (see below)
  3581. Return: AX = status
  3582.         0000h successful
  3583.         FFFEh not a PCX file
  3584.         FFFFh file does not exist
  3585. Note:    For FGDRIVER v1.10, this function was "FG_SETNUM" (see AX=0094h);
  3586.        "FG_PCXHEAD" did not exist yet
  3587. SeeAlso: AX=0074h,AX=009Ah
  3588.  
  3589. Format of variable pointer record:
  3590. Offset    Size    Description
  3591.  00h    WORD    segment of ASCIZ filename
  3592.  02h    WORD    offset of ASCIZ filename
  3593.  04h    WORD    segment of 128-byte buffer for PCX header
  3594.  06h    WORD    offset of 128-byte buffer for PCX header
  3595. --------V-620074-----------------------------
  3596. INT 62 u - FGDRIVER v3.03 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  3597.     AX = 0074h
  3598.     ES:BX -> PCX header (see AX=0073h)
  3599. Return: AX = optimal video mode for PCX file
  3600.         FFFEh not a valid PCX header
  3601.         FFFFh unable to determine compatible video mode
  3602. Note:    For FGDRIVER v1.10, this function was "FG_SCRLOCK" (see AX=0088h);
  3603.        "FG_PCXMODE" did not exist yet
  3604. SeeAlso: AX=0073h,AX=009Ah
  3605. --------V-620075-----------------------------
  3606. INT 62 u - FGDRIVER v3.03 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  3607.     AX = 0075h
  3608. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  3609. Note:    For FGDRIVER v1.10, this function was "FG_INITJOY" (see AX=004Dh);
  3610.        "FG_PLAYING" was AX=0091h
  3611. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  3612. --------V-620076-----------------------------
  3613. INT 62 u - FGDRIVER v3.03 - "FG_POINT" - DISPLAY A PIXEL
  3614.     AX = 0076h
  3615.     BX = column
  3616.     CX = row
  3617. Notes:    For FGDRIVER v1.10, this function was "FG_GETXJOY" (see AX=0044h);
  3618.        "FG_POINT" was AX=001Fh
  3619.     This call is ignored in text modes
  3620. SeeAlso: AX=0006h,AX=001Bh,AX=0041h,AX=0077h
  3621. --------V-620077-----------------------------
  3622. INT 62 u - FGDRIVER v3.03 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  3623.     AX = 0077h
  3624.     BX = column
  3625.     CX = row
  3626. Notes:    For FGDRIVER v1.10, this function was "FG_GETYJOY" (see AX=0046h);
  3627.        "FG_POINTX" did not exist yet
  3628.     This call is ignored in text modes
  3629. SeeAlso: AX=0041h,AX=0076h
  3630. --------V-620078-----------------------------
  3631. INT 62 u - FGDRIVER v3.03 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  3632.     AX = 0078h
  3633.     CX = number of vertices
  3634.     ES:BX -> variable pointer record (see below)
  3635. Notes:    For FGDRIVER v1.10, this function was "FG_BUTTON" (see AX=0009h);
  3636.        "FG_POLYFILL" did not exist yet
  3637.     The vertex array consists of pairs of words specifying the X and Y
  3638.       coordinates of each vertex; the work array is used internally and
  3639.       must contain at least four times as many bytes as the polygon is
  3640.       high in pixels
  3641.     This function is ignored in text modes
  3642.     If the polygon is non-convex, only a portion of it may be filled
  3643. SeeAlso: AX=000Eh,AX=0025h,AX=0079h,AX=007Ah,AX=007Bh
  3644.  
  3645. Format of variable pointer record:
  3646. Offset    Size    Description
  3647.  00h    WORD    segment of vertex array
  3648.  02h    WORD    offset of vertex array
  3649.  04h    WORD    segment of work array
  3650.  06h    WORD    offset of work array
  3651. --------V-620079-----------------------------
  3652. INT 62 u - FGDRIVER v3.03 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  3653.     AX = 0079h
  3654.     CX = number of vertices in polygon
  3655.     ES:BX -> variable pointer record (see below)
  3656. Notes:    For FGDRIVER v1.10, this function was "FG_INTJOY" (see AX=0050h);
  3657.        "FG_POLYGON" was AX=002Eh
  3658.     This call is ignored in text modes
  3659. SeeAlso: AX=0078h,AX=007Ah,AX=007Bh
  3660.  
  3661. Format of variable pointer record:
  3662. Offset    Size    Description
  3663.  00h    WORD    segment of WORD array containing vertex columns
  3664.  02h    WORD    offset of WORD array containing vertex columns
  3665.  04h    WORD    segment of WORD array containing vertex rows
  3666.  06h    WORD    offset of WORD array containing vertex rows
  3667. --------V-62007A-----------------------------
  3668. INT 62 u - FGDRIVER v3.03 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  3669.     AX = 007Ah
  3670.     CX = number of vertices in polygon
  3671.     ES:BX -> vertex array (see below)
  3672. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEINI" (see AX=0061h);
  3673.        "FG_POLYLINE" did not exist yet
  3674.     This function is equivalent to "FG_POLYGON", but uses only a single
  3675.       array to define the vertices
  3676.     This call is ignored in text modes
  3677. SeeAlso: AX=0076h,AX=0078h,AX=0079h,AX=007Bh
  3678.  
  3679. Format of vertex array element:
  3680. Offset    Size    Description
  3681.  00h    WORD    column
  3682.  02h    WORD    row
  3683. --------V-62007B-----------------------------
  3684. INT 62 u - FGDRIVER v3.03 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  3685.     AX = 007Bh
  3686.     BX = horizontal offset (default 0)
  3687.     CX = vertical offset (default 0)
  3688. Desc:    define the offsets applied to all vertices of polygons drawn with
  3689.       "FG_POLYFILL" or "FG_POLYLINE"
  3690. Note:    For FGDRIVER v1.10, this function was "FG_MOUSEVIS" (see AX=0067h);
  3691.        "FG_POLYOFF" did not exist yet
  3692. SeeAlso: AX=0078h,AX=007Ah
  3693. --------V-62007C-----------------------------
  3694. INT 62 u - FGDRIVER v3.03 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  3695.     AX = 007Ch
  3696.     CX = length of string
  3697.     ES:BX -> string to display
  3698. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEBUT" (see AX=005Eh);
  3699.        "FG_PRINT" did not exist yet
  3700.     The string is displayed in the current color, and the graphics cursor
  3701.       is updated to be just to the right of the last displayed character
  3702.     This function is ignored in text modes
  3703. SeeAlso: AX=000Ch,AX=002Dh,AX=0052h
  3704. --------V-62007D-----------------------------
  3705. INT 62 u - FGDRIVER v3.03 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  3706.     AX = 007Dh
  3707.     ES:BX -> buffer containing previously-saved image
  3708.     CX = left edge
  3709.     DX = right edge
  3710.     SI = top edge
  3711.     DI = bottom edge
  3712. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPOS" (see AX=0064h);
  3713.        "FG_PUTBLOCK" did not exist yet
  3714.     In text modes, coordinates are character positions; in graphics modes,
  3715.       they are defined in screen space, and the left and right edges are
  3716.       adjusted to a byte boundary if necessary
  3717. SeeAlso: AX=0031h,AX=007Eh
  3718. --------V-62007E-----------------------------
  3719. INT 62 u - FGDRIVER v3.03 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  3720.     AX = 007Eh
  3721.     ES:BX -> buffer containing mode-specific bitmap
  3722.     CX = width in bytes
  3723.     DX = height in pixel rows
  3724. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSECUR" (see AX=005Fh);
  3725.        "FG_PUTIMAGE" did not exist yet
  3726.     The bitmap is displayed with its lower left corner at the graphics
  3727.       cursor position; color 0 is NOT treated as transparent
  3728. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Dh
  3729. --------V-62007F-----------------------------
  3730. INT 62 u - FGDRIVER v3.03 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  3731.     AX = 007Fh
  3732. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPTR" (see AX=0065h);
  3733.       "FG_QUIET" was AX=0090h
  3734.     This call has no effect if there is no continuous sound playing
  3735. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00ABh
  3736. --------V-620080-----------------------------
  3737. INT 62 u - FGDRIVER v3.03 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  3738.     AX = 0080h
  3739.     BX = left edge column
  3740.     CX = right edge column
  3741.     DX = top edge row
  3742.     SI = bottom edge row
  3743. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSELIM" (see AX=0062h);
  3744.       "FG_RECT" was AX=002Ah
  3745. SeeAlso: AX=0006h,AX=0011h,AX=0021h,AX=0031h
  3746. --------V-620081-----------------------------
  3747. INT 62 u - FGDRIVER v3.03 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  3748.     AX = 0081h
  3749. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEMOV" (see AX=0063h);
  3750.       "FG_RESET" was AX=0006h
  3751.     This call is ignored in graphics modes
  3752.     The screen attributes are only restored if ANSI.SYS is loaded
  3753. SeeAlso: AX=0026h,AX=0093h
  3754. --------V-620082-----------------------------
  3755. INT 62 u - FGDRIVER v3.03 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  3756.     AX = 0082h
  3757.     BX = new page width in pixels
  3758.     CX = new page height in pixels
  3759. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSESPD" (see AX=0066h);
  3760.       "FG_RESIZE" was AX=0045h
  3761.     The visible page must be set to 0000h before making this call
  3762.     The mouse, joysticks, expanded memory, and extended memory must be
  3763.       reinitialized after this call
  3764. SeeAlso: AX=006Dh,AX=008Fh
  3765. --------V-620083-----------------------------
  3766. INT 62 u - FGDRIVER v3.03 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  3767.     AX = 0083h
  3768.     BX = left edge column
  3769.     CX = right edge column
  3770.     DX = top edge row
  3771.     SI = bottom edge row
  3772. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESTORE" was AX=005Bh
  3773.     The left and right edges are adjusted to byte boundaries if necessary
  3774. SeeAlso: AX=0087h,AX=00A6h
  3775. --------V-620084-----------------------------
  3776. INT 62 u - FGDRIVER v3.03 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  3777.     AX = 0084h
  3778. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESUME" was AX=0092h
  3779. SeeAlso: AX=009Eh,AX=00A0h
  3780. --------V-620085-----------------------------
  3781. INT 62 u - FGDRIVER v3.03 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  3782.     AX = 0085h
  3783.     ES:BX -> mode-specific bitmap
  3784.     CX = width of bitmap in bytes
  3785.     DX = height of bitmap in pixel rows
  3786. Notes:    For FGDRIVER v1.10, this function was unused;"FG_REVIMAGE" was AX=004Bh
  3787.     This call is ignored in text modes
  3788.     The image is drawn with its lower left corner at the current graphics
  3789.       cursor position
  3790. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=0086h,AX=008Ch,AX=009Ah
  3791. --------V-620086-----------------------------
  3792. INT 62 u - FGDRIVER v3.03 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  3793.     AX = 0086h
  3794.     ES:BX -> array containing image stored as a masking map (see AX=001Dh)
  3795.     CX = number of pixel runs in masking map
  3796.     DX = width of masking map in pixels
  3797. Notes:    For FGDRIVER v1.10, this function was unused; "FG_REVMASK" was AX=0053h
  3798.     This call is ignored in text modes and in native EGA and VGA graphics
  3799.       modes
  3800.     The image is drawn with its lower left corner at the current graphics
  3801.       cursor position
  3802. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0085h,AX=008Ch,AX=00A5h
  3803. --------V-620087-----------------------------
  3804. INT 62 u - FGDRIVER v3.03 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  3805.     AX = 0087h
  3806.     BX = left edge column
  3807.     CX = right edge column
  3808.     DX = top edge row
  3809.     SI = bottom edge row
  3810. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SAVE" was AX=005Ah
  3811.     The left and right edges are adjusted to byte boundaries if necessary
  3812. SeeAlso: AX=0083h,AX=00A6h
  3813. --------V-620088-----------------------------
  3814. INT 62 u - FGDRIVER v3.03 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  3815.     AX = 0088h
  3816. Return: AX = ScrollLock state (0000h off, 0001h on)
  3817. Program: FGDRIVER is the external video driver for the shareware
  3818.       Fastgraph/Light by Ted Gruber Software
  3819. Note:    For FGDRIVER v1.10, this function was "FG_SOUND" (see AX=009Dh);
  3820.       "FG_SCRLOCK" was AX=0074h
  3821. SeeAlso: AX=000Ah,AX=006Ch,AX=008Bh,AX=0094h
  3822. --------V-620089-----------------------------
  3823. INT 62 u - FGDRIVER v3.03 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  3824.     AX = 0089h
  3825.     BX = left edge column
  3826.     CX = right edge column
  3827.     DX = top edge row
  3828.     SI = bottom edge row
  3829.     DI = number of pixels by which to scroll (positive scrolls up,
  3830.         negative scrolls down)
  3831.     ES = type of scroll
  3832.         0000h circular (rows scrolled off are copied to vacated rows)
  3833.         else vacated rows are filled with the current color
  3834. Notes:    For FGDRIVER v1.10, this function was "FG_SOUNDS" (see AX=009Eh);
  3835.       "FG_SCROLL" was AX=0067h
  3836.     In graphics modes, the left and right edges are adjusted to byte
  3837.       boundaries if necessary
  3838.     Circular scrolling uses part of the hidden page as a workspace
  3839. SeeAlso: AX=0071h,AX=0095h
  3840. --------V-62008A-----------------------------
  3841. INT 62 u - FGDRIVER v3.03 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  3842.     AX = 008Ah
  3843.     BX = foreground
  3844.     CX = background
  3845.     DX = blink (0000h nonblinking, 0001h blink)
  3846. Notes:    For FGDRIVER v1.10, this function was "FG_VOICE" (see AX=00AAh);
  3847.       "FG_SETATTR" was AX=0019h
  3848.     This call is ignored in graphics modes
  3849. SeeAlso: AX=000Bh,,AX=0030h,AX=0034h
  3850. --------V-62008B-----------------------------
  3851. INT 62 u - FGDRIVER v3.03 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  3852.     AX = 008Bh
  3853.     BX = new state (0000h off, 0001h on)
  3854. Note:    For FGDRIVER v1.10, this function was "FG_VOICES" (see AX=00ABh);
  3855.       "FG_SETCAPS" was AX=0071h
  3856. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=0094h
  3857. --------V-62008C-----------------------------
  3858. INT 62 u - FGDRIVER v3.03 - "FG_SETCLIP" - SET CLIPPING REGION
  3859.     AX = 008Ch
  3860.     BX = left edge of clipping region
  3861.     CX = right edge of clipping region
  3862.     DX = top edge of clipping region
  3863.     SI = bottom edge of clipping region
  3864. Note:    For FGDRIVER v1.10, this function was "FG_MUSIC" (see AX=006Ah);
  3865.       "FG_SETCLIP" was AX=0029h
  3866. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0086h,AX=00A5h
  3867. --------V-62008D-----------------------------
  3868. INT 62 u - FGDRIVER v3.03 - "FG_SETCOLOR" - SET CURRENT COLOR
  3869.     AX = 008Dh
  3870.     BX = new color index (or text attribute in text modes)
  3871. Note:    For FGDRIVER v1.10, this function was "FG_MUSICB" (see AX=006Bh);
  3872.       "FG_SETCOLOR" was AX=001Ah
  3873. SeeAlso: AX=0016h,AX=0034h,AX=0039h
  3874. --------V-62008E-----------------------------
  3875. INT 62 u - FGDRIVER v3.03 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  3876.     AX = 008Eh
  3877.     CX = number of DAC registers to set (0001h to 0100h)
  3878.     DX = starting DAC register number (0000h to 00FFh)
  3879.     ES:BX -> buffer containing DAC red/green/blue triples
  3880. Notes:    For FGDRIVER v1.10, this function was "FG_HUSH" (see AX=0048h);
  3881.       "FG_SETDACS" was AX=00A5h
  3882.     The register number wraps back to zero after reaching FFh
  3883.     This call has no effect in text modes or graphics modes below 11h
  3884. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,INT 10/AX=1012h
  3885. --------V-62008F-----------------------------
  3886. INT 62 u - FGDRIVER v3.03 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  3887.     AX = 008Fh
  3888.     BX = page number (00h-3Fh)
  3889.     CX = page address
  3890.     DX = page type (see AX=0036h)
  3891. Notes:    For FGDRIVER v1.10, this function was "FG_HUSHNEXT" (see AX=0049h);
  3892.       "FG_SETENTRY" did not exist yet
  3893. SeeAlso: AX=002Eh,AX=0036h,AX=0093h
  3894. --------V-620090-----------------------------
  3895. INT 62 u - FGDRIVER v3.03 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  3896.     AX = 0090h
  3897.     BX = operation
  3898.         0000h replacement
  3899.         0001h AND
  3900.         0002h OR
  3901.         0003h XOR
  3902. Notes:    For FGDRIVER v1.10, this function was "FG_QUIET" (see AX=007Fh);
  3903.       "FG_SETFUNC" was AX=009Ch
  3904.     This function is only available in native EGA/VGA graphics modes
  3905.       (0Dh to 12h)
  3906. SeeAlso: AX=001Ch,AX=0076h
  3907. --------V-620091-----------------------------
  3908. INT 62 u - FGDRIVER v3.03 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  3909.     AX = 0091h
  3910.     BX = new hidden page (0000h to 003Fh)
  3911. Notes:    For FGDRIVER v1.10, this function was "FG_PLAYING" (see AX=0075h);
  3912.       "FG_SETHPAGE" was AX=0041h
  3913.     The specified page must be a physical page or a virtual page
  3914. SeeAlso: AX=0037h,AX=0095h,AX=0098h
  3915. --------V-620092-----------------------------
  3916. INT 62 u - FGDRIVER v3.03 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  3917.     AX = 0092h
  3918.     BX = new screen size (25, 43, 50)
  3919. Note:    For FGDRIVER v1.10, this function was "FG_RESUME" (see AX=0084h);
  3920.       "FG_SETLINES" was AX=0011h
  3921. SeeAlso: AX=003Bh
  3922. --------V-620093-----------------------------
  3923. INT 62 u - FGDRIVER v3.03 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  3924.     AX = 0093h
  3925.     BX = new video mode or FFFFh for current mode
  3926.     ES:DX -> WORD ???
  3927. Notes:    For FGDRIVER v1.10, this function was "FG_SUSPEND" (see AX=00A0h);
  3928.       "FG_SETMODE" was AX=0001h
  3929.     This call resets the active video page to page 0000h, the clipping
  3930.       region to the entire screen, text rows to 25, etc.
  3931. SeeAlso: AX=003Fh,INT 10/AH=00h
  3932.  
  3933. Values for video mode:
  3934.  00h-07h standard BIOS modes
  3935.  09h    PCjr/Tandy1000 320x200x16
  3936.  0Bh    Hercules graphics 720x348
  3937.  0Ch    Hercules graphics 320x200
  3938.  0Dh-13h standard BIOS modes
  3939.  14h    VGA graphics 320x200x256
  3940.  15h    VGA graphics 320x400x256
  3941.  16h    VGA graphics 320x240x256
  3942.  17h    VGA graphics 320x480x256
  3943.  18h    SVGA graphics 640x400x256
  3944.  19h    SVGA graphics 640x480x256
  3945.  1Ah    SVGA graphics 800x600x256
  3946.  1Bh    SVGA graphics 1024x768x256
  3947.  1Ch    SVGA graphics 800x600x16
  3948.  1Dh    SVGA graphics 1024x768x16
  3949. --------V-620094-----------------------------
  3950. INT 62 u - FGDRIVER v3.03 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  3951.     AX = 0094h
  3952.     BX = new state (0000h off, 0001h on)
  3953. Note:    For FGDRIVER v1.10, this function was unused; "FG_SETNUM" was AX=0073h
  3954. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=008Bh
  3955. --------V-620095-----------------------------
  3956. INT 62 u - FGDRIVER v3.03 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  3957.     AX = 0095h
  3958.     BX = new video page (0000h to 003Fh)
  3959. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SETPAGE" was AX=003Dh
  3960.     The specified page must be a physical or virtual page
  3961. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0071h
  3962. --------V-620096-----------------------------
  3963. INT 62 u - FGDRIVER v3.03 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  3964.     AX = 0096h
  3965.     BX = palette or DAC register number
  3966.     CX = red color component
  3967.     DX = green component
  3968.     SI = blue component
  3969. Notes:    For FGDRIVER v1.10, this function was "FG_WAITFOR" (see AX=00ACh);
  3970.       "FG_SETRGB" was AX=001Bh
  3971.     The register number may be negative for Tandy, PCjr, and 200-line
  3972.       EGA graphics modes to specify an intense color
  3973.     This call has no effect in text, CGA graphics, and Hercules graphics
  3974.       modes
  3975. SeeAlso: AX=0042h
  3976. --------V-620097-----------------------------
  3977. INT 62 u - FGDRIVER v3.03 - UNUSED
  3978.     AX = 0097h
  3979. Return: AX = 0000h
  3980. Note:    For FGDRIVER v1.10, this function was "FG_STALL" (see AX=009Fh)
  3981. --------V-620098-----------------------------
  3982. INT 62 u - FGDRIVER v3.03 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  3983.     AX = 0098h
  3984.     BX = new video page (0000h to 003Fh)
  3985. Notes:    For FGDRIVER v1.10, this function was "FG_MEASURE" (see AX=005Bh);
  3986.       "FG_SETVPAGE" was AX=003Fh
  3987.     The specified page must be a physical or virtual page
  3988. SeeAlso: AX=0037h,AX=0091h,AX=0095h
  3989. --------V-620099-----------------------------
  3990. INT 62 u - FGDRIVER v3.03 - UNUSED
  3991.     AX = 0099h
  3992. Return: AX destroyed
  3993. Note:    For FGDRIVER v1.10, this function was "FG_GETCLOCK" (see AX=0033h)
  3994. --------V-62009A-----------------------------
  3995. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  3996.     AX = 009Ah
  3997.     ES:BX -> ASCIZ filename of PCX image
  3998.     CX = flags (see below)
  3999. Return: AX = status
  4000.         0000h success
  4001.         0001h file not found
  4002.         0002h not a PCX file
  4003. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SHOWPCX" did not
  4004.       exist yet
  4005.     This function is ignored in text modes and Hercules low-res graphics
  4006. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=0060h"1.10",AX=009Bh,AX=009Ch
  4007.  
  4008. Bitfields for flags:
  4009. Bit(s)    Description
  4010.  0    use current palette rather than PCX file's palette
  4011.  1    display image at cursor position instead of position in PCX header
  4012.  2-15    reserved
  4013. --------V-62009B-----------------------------
  4014. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  4015.     AX = 009Bh
  4016.     ES:BX -> ASCIZ filename of packed pixel run image
  4017.     CX = width in pixels (nonzero)
  4018. Return: AX = status
  4019.         0000h successful
  4020.         0001h file not found
  4021. Notes:    For FGDRIVER v1.10, this function was "FG_MEMAVAIL" (see AX=005Ch);
  4022.       "FG_SHOWPPR" did not exist yet
  4023.     The image is displayed with its lower left corner at the current
  4024.       graphics cursor position
  4025.     This function is ignored in text modes and 256-color graphics modes
  4026. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Ch
  4027. --------V-62009C-----------------------------
  4028. INT 62 u - FGDRIVER v3.03 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  4029.     AX = 009Ch
  4030.     ES:BX -> ASCIZ filename of standard pixel run image
  4031.     CX = width in pixels (nonzero)
  4032. Return: AX = status
  4033.         0000h successful
  4034.         0001h file not found
  4035. Notes:    For FGDRIVER v1.10, this function was "FG_SETFUNC" (see AX=0090h);
  4036.       "FG_SHOWSPR" did not exist yet
  4037.     The image is displayed with its lower left corner at the current
  4038.       graphics cursor position
  4039.     This function is ignored in text modes
  4040. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh
  4041. --------V-62009D-----------------------------
  4042. INT 62 u - FGDRIVER v3.03 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  4043.     AX = 009Dh
  4044.     BX = frequency in Hertz (18-32767)
  4045.     CX = duration in clock ticks (0000h or negative for continuous sound)
  4046. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCCMS" (see AX=0001h);
  4047.       "FG_SOUND" was AX=0088h
  4048.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4049.       AX=008Dh) is already in progress
  4050. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4051. --------V-62009E-----------------------------
  4052. INT 62 u - FGDRIVER v3.03 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  4053.     AX = 009Eh
  4054.     CX = number of times to cycle through sound list
  4055.     ES:BX -> sounds array (see below)
  4056. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCEMS" (see AX=0002h);
  4057.       "FG_SOUNDS" was AX=0089h
  4058.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4059.       AX=008Dh) is already in progress
  4060. SeeAlso: AX=0048h,AX=006Bh,AX=009Dh,AX=00A0h,AX=00ABh
  4061.  
  4062. Format of sounds array element:
  4063. Offset    Size    Description
  4064.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  4065.  02h    WORD    duration of sound in clock ticks
  4066. --------V-62009F-----------------------------
  4067. INT 62 u - FGDRIVER v3.03 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  4068.     AX = 009Fh
  4069.     BX = duration in processor-dependent delay units (see AX=0098h)
  4070. Return: after delay elapses
  4071. Note:    For FGDRIVER v1.10, this function was "FG_ALLOCXMS" (see AX=0003h);
  4072.       "FG_STALL" was AX=0097h
  4073. SeeAlso: AX=005Bh,INT 2F/AX=1224h
  4074. --------V-6200A0-----------------------------
  4075. INT 62 u - FGDRIVER v3.03 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  4076.     AX = 00A0h
  4077. Notes:    For FGDRIVER v1.10, this function was "FG_INITEMS" (see AX=004Ch);
  4078.       "FG_SUSPEND" was AX=0093h
  4079.     This call has no effect if there is no asynchronous sound in progress
  4080.     The program must not exit while sound is suspended
  4081. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  4082. --------V-6200A1-----------------------------
  4083. INT 62 u - FGDRIVER v3.03 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  4084.     AX = 00A1h
  4085.     BX = method (see below)
  4086. Return: AX = status
  4087.         0000h no VESA BIOS or supported SVGA chipset
  4088.         0001h using VESA BIOS
  4089.         0002h-0016h specific chipset being used (same as "method" below)
  4090. Notes:    For FGDRIVER v1.10, this function was "FG_INITXMS" (see AX=004Eh);
  4091.       "FG_SVGAINIT" did not exist yet
  4092.     This function must be called before attempting to set SVGA graphics
  4093.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  4094.       "FG_MEMORY"
  4095. SeeAlso: AX=0023h,AX=00A2h,AX=00A3h
  4096.  
  4097. Values for method:
  4098.  0000h    autodetect, give chipset-specific code priority over VESA
  4099.  0001h    autodetect, give VESA priority over chipset-specific code
  4100.  0002h    Ahead type "A"
  4101.  0003h    Ahead type "B"
  4102.  0004h    ATI 18800
  4103.  0005h    ATI 18800-1
  4104.  0006h    ATI 28800
  4105.  0007h    Chips & Technologies 82c451/455/456
  4106.  0008h    C&T 82c452
  4107.  0009h    C&T 82c453
  4108.  000Ah    Genoa 6000 series
  4109.  000Bh    Oak OTI-067
  4110.  000Ch    Paradise PVGA1a
  4111.  000Dh    Paradise WD90C00/WD90C10
  4112.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  4113.  000Fh    Trident 8800
  4114.  0010h    Trident 8900
  4115.  0011h    Tseng ET3000
  4116.  0012h    Tseng ET4000
  4117.  0013h    Video7
  4118.  0014h    Cirrus Logic 5400 series
  4119.  0015h    S3
  4120.  0016h    Trident 8900B/8900C/9000
  4121. --------V-6200A2-----------------------------
  4122. INT 62 u - FGDRIVER v3.03 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  4123.     AX = 00A2h
  4124. Return: AX = chipset information (see below)
  4125. Note:    For FGDRIVER v1.10, this function was "FG_BOX" (see AX=0006h);
  4126.       "FG_SVGASTAT" did not exist yet
  4127. SeeAlso: AX=0023h,AX=00A1h,AX=00A3h
  4128.  
  4129. Bitfields for chipset information:
  4130. Bit(s)    Description
  4131.  0    SVGA kernel initialized
  4132.  1    VESA support enabled
  4133.  2    extended video pages available in modes 13-23
  4134.  3    SVGA chipset has separate read and write banks
  4135.  4-15    reserved (0)
  4136. --------V-6200A3-----------------------------
  4137. INT 62 u - FGDRIVER v3.03 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  4138.     AX = 00A3h
  4139.     ES:BX -> variable pointer record (see below)
  4140. Note:    For FGDRIVER v1.10, this function was "FG_BOXDEPTH" (see AX=0007h);
  4141.       "FG_SVGAVER" did not exist yet
  4142. SeeAlso: AX=00A1h,AX=00A2h
  4143.  
  4144. Format of variable pointer record:
  4145. Offset    Size    Description
  4146.  00h    WORD    segment of WORD buffer for major version
  4147.  02h    WORD    offset of WORD buffer for major version
  4148.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  4149.  06h    WORD    offset of WORD buffer for minor version
  4150. --------V-6200A4-----------------------------
  4151. INT 62 u - FGDRIVER v3.03 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  4152.     AX = 00A4h
  4153.     BX = color index
  4154.     CX = transparency (00h opaque, other transparent)
  4155. Notes:    For FGDRIVER v1.10, this function was "FG_GETDACS" (see AX=0035h);
  4156.       "FG_TCDEFINE" did not exist yet
  4157.     This function is ignored in text modes
  4158. SeeAlso: AX=00A5h,AX=00A6h
  4159. --------V-6200A5-----------------------------
  4160. INT 62 u - FGDRIVER v3.03 - "FG_TCMASK" - SET TRANSPARENT COLORS
  4161.     AX = 00A5h
  4162.     BX = colors to consider transparent (bit 0 = color 0, etc)
  4163. Notes:    For FGDRIVER v1.10, this function was "FG_SETDACS" (see AX=008Eh);
  4164.       "FG_TCMASK" was AX=005Eh
  4165.     This call is ignored in text modes
  4166.     The specified colors are considered transparent by "FG_TCXFER"
  4167. SeeAlso: AX=00A4h,AX=00A6h
  4168. --------V-6200A6-----------------------------
  4169. INT 62 u - FGDRIVER v3.03 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  4170.     AX = 00A6h
  4171.     CX = source video page
  4172.     DX = destination video page
  4173.     ES:BX -> copy record (see below)
  4174. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TCXFER" was AX=005Dh
  4175.     Pixels which are in any of the colors defined as transparent with
  4176.       "FG_TCMASK" (see AX=00A5h) are left unchanged in the destination
  4177.       region
  4178.     The source and destination regions must not overlap if they are located
  4179.       on the same page
  4180.     This call is ignored in text modes
  4181. SeeAlso: AX=00A4h,AX=00A5h,AX=00A9h
  4182.  
  4183. Format of copy record:
  4184. Offset    Size    Description
  4185.  00h    WORD    left edge column of source region
  4186.  02h    WORD    right edge column of source region
  4187.  04h    WORD    top edge row of source region
  4188.  06h    WORD    bottom edge row of source region
  4189.  08h    WORD    left edge of destination
  4190.  0Ah    WORD    bottom edge of destination
  4191. --------V-6200A7-----------------------------
  4192. INT 62 u - FGDRIVER v3.03 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  4193.     AX = 00A7h
  4194.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  4195.     CX = required number of video pages (ignore memory size if <= 0)
  4196. Return: AX = status
  4197.         0000h mode not available with requested number of pages
  4198.         0001h mode is available
  4199. Note:    For FGDRIVER v1.10, this function was unused;"FG_TESTMODE" was AX=0002h
  4200. SeeAlso: AX=0005h,AX=0093h
  4201. --------V-6200A8-----------------------------
  4202. INT 62 u - FGDRIVER v3.03 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  4203.     AX = 00A8h
  4204.     CX = length of string
  4205.     ES:BX -> string
  4206. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TEXT" was AX=0032h
  4207.     The string is displayed starting at the text cursor position using the
  4208.       current text attribute (text modes) or color index (graphics modes)
  4209.     The text cursor position is updated after this call
  4210. SeeAlso: AX=000Ch,AX=007Ch
  4211. --------V-6200A9-----------------------------
  4212. INT 62 u - FGDRIVER v3.03 - "FG_TRANSFER" - COPY REGION
  4213.     AX = 00A9h
  4214.     CX = source video page
  4215.     DX = destination video page
  4216.     ES:BX -> copy record (see below)
  4217. Notes:    For FGDRIVER v1.10, this function was unused;"FG_TRANSFER" was AX=005Ch
  4218.     The source and destination regions must not overlap if they are located
  4219.       on the same page
  4220. SeeAlso: AX=0083h,AX=0087h,AX=0089h,AX=00A6h
  4221.  
  4222. Format of copy record:
  4223. Offset    Size    Description
  4224.  00h    WORD    left edge column of source region
  4225.  02h    WORD    right edge column of source region
  4226.  04h    WORD    top edge row of source region
  4227.  06h    WORD    bottom edge row of source region
  4228.  08h    WORD    left edge of destination
  4229.  0Ah    WORD    bottom edge of destination
  4230. --------V-6200AA-----------------------------
  4231. INT 62 u - FGDRIVER v3.03 - "FG_VOICE" - START SOUND
  4232.     AX = 00AAh
  4233.     BX = channel on TI sound chip
  4234.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  4235.         5 = channel 4 with white noise
  4236.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  4237.         2=2048 Hz for channels 4 and 5)
  4238.     DX = volume
  4239.     SI = duration in clock ticks (continuous if <= 0)
  4240. Program: FGDRIVER is the external video driver for the shareware
  4241.       Fastgraph/Light by Ted Gruber Software
  4242. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICE" was AX=008Ah
  4243.     This function is only available on the PCjr and Tandy 1000 machines
  4244. SeeAlso: AX=006Ah,AX=009Dh,AX=00ABh
  4245. --------V-6200AB-----------------------------
  4246. INT 62 u - FGDRIVER v3.03 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  4247.     AX = 00ABh
  4248.     ES:BX -> tone array (see below)
  4249.     CX = number of times to repeat tone array
  4250. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICES" was AX=008Bh
  4251.     This function is only available on the PCjr and Tandy 1000 machines
  4252. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00AAh
  4253.  
  4254. Format of tone array element:
  4255. Offset    Size    Description
  4256.  00h    WORD    channel number (0000h terminates array)
  4257.  02h    WORD    frequency
  4258.  04h    WORD    volume
  4259.  06h    WORD    duration in 1/72.8 seconds
  4260. --------V-6200AC-----------------------------
  4261. INT 62 u - FGDRIVER v3.03 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  4262.     AX = 00ACh
  4263.     BX = duration in clock ticks
  4264. Return: after delay elapses
  4265. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITFOR" was AX=0096h
  4266. SeeAlso: AX=009Fh,INT 1A/AX=FF01h
  4267. --------V-6200AD-----------------------------
  4268. INT 62 u - FGDRIVER v3.03 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  4269.     AX = 00ADh
  4270. Return: after next key pressed
  4271. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITKEY" was AX=006Dh
  4272. SeeAlso: AX=000Ah,AX=003Ah,AX=0051h,AX=0054h,INT 16/AH=00h
  4273. --------V-6200AE-----------------------------
  4274. INT 62 u - FGDRIVER v3.03 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  4275.     AX = 00AEh
  4276.     BX = new state (0000h disabled, 0001h enabled)
  4277. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITVR" did not
  4278.       exist yet
  4279. --------V-6200AF-----------------------------
  4280. INT 62 u - FGDRIVER v3.03 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  4281.     AX = 00AFh
  4282.     ES:BX -> variable pointers (see below)
  4283. Return: indicated variables filled with cursor row and column for active
  4284.       display
  4285. Note:    For FGDRIVER v1.10, this function was unused; "FG_WHERE" was AX=0034h
  4286. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0068h
  4287.  
  4288. Format of variable pointers:
  4289. Offset    Size    Description
  4290.  00h    WORD    segment of WORD buffer for cursor row
  4291.  02h    WORD    offset of WORD buffer for cursor row
  4292.  04h    WORD    segment WORD buffer for cursor column
  4293.  06h    WORD    offset WORD buffer for cursor column
  4294. --------V-6200B0-----------------------------
  4295. INT 62 u - FGDRIVER v3.03 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  4296.     AX = 00B0h
  4297.     BX = screen space column
  4298. Return: AX = character space column containing specified coordinate
  4299. Note:    For FGDRIVER v1.10, this function was unused; "FG_XALPHA" was AX=000Ch
  4300. SeeAlso: AX=00B1h,AX=00B2h
  4301. --------V-6200B1-----------------------------
  4302. INT 62 u - FGDRIVER v3.03 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  4303.     AX = 00B1h
  4304.     BX = character space column
  4305. Return: AX = screen space column of leftmost pixel in specified character col
  4306. Note:    For FGDRIVER v1.10, this function was unused;"FG_XCONVERT" was AX=000Eh
  4307. SeeAlso: AX=00B0h,AX=00B3h
  4308. --------V-6200B2-----------------------------
  4309. INT 62 u - FGDRIVER v3.03 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  4310.     AX = 00B2h
  4311.     BX = screen space row
  4312. Return: AX = character space row containing specified coordinate
  4313. Note:    For FGDRIVER v1.10, this function was unused; "FG_YALPHA" was AX=000Dh
  4314. SeeAlso: AX=00B0h,AX=00B3h
  4315. --------V-6200B3-----------------------------
  4316. INT 62 u - FGDRIVER v3.03 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  4317.     AX = 00B3h
  4318.     BX = character space row
  4319. Return: AX = screen space row of topmost pixel in specified character row
  4320. Program: FGDRIVER is the external video driver for the shareware
  4321.       Fastgraph/Light by Ted Gruber Software
  4322. Note:    For FGDRIVER v1.10, this function was unused;"FG_YCONVERT" was AX=000Fh
  4323. SeeAlso: AX=00B1h,AX=00B2h
  4324. --------T-6201-------------------------------
  4325. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  4326.     AH = 01h
  4327. Program: Cswitch is a set of multitasking functions by Herb Rose
  4328. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  4329. --------N-6201-------------------------------
  4330. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4331.     AH = 01h
  4332. Return: CF clear if successful
  4333.     CF set on error
  4334.         AL = error code
  4335. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4336. --------T-6202-------------------------------
  4337. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  4338.     AH = 02h
  4339.     DX = semaphore number (0-63)
  4340. Return: AX = FFFFh bad semaphore number
  4341.          else  success
  4342. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  4343. --------N-6202-------------------------------
  4344. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  4345.     AH = 02h
  4346. Return: CF clear if successful
  4347.     CF set on error
  4348.         AL = error code
  4349. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4350. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4351. --------T-6203-------------------------------
  4352. INT 62 - Cswitch - CHECK SEMAPHORE
  4353.     AH = 03h
  4354.     DX = semaphore number (0-63)
  4355. Return: AX = FFFFh not owned
  4356.          else  owned
  4357. SeeAlso: AH=02h,AH=04h
  4358. --------N-6203-------------------------------
  4359. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  4360.     AH = 03h
  4361.     DS:SI -> DWORD buffer for IP address
  4362. Return: CF clear if successful
  4363.     CF set on error
  4364.         AL = error code
  4365. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4366.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4367.       consecutive interrupt (64h by default) if it is loaded
  4368. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4369. --------T-6204-------------------------------
  4370. INT 62 - Cswitch - TRIGGER SEMAPHORE
  4371.     AH = 04h
  4372.     DX = semaphore number (0-63)
  4373. Return: AX = FFFFh bad semaphore number
  4374.          else  success
  4375. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  4376. --------N-6204-------------------------------
  4377. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4378.     AH = 04h
  4379.     BX = ???
  4380.     ES:SI -> FAR routine for ???
  4381. Return: CF clear if successful
  4382.     CF set on error
  4383.         AL = error code
  4384. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4385. --------T-6205-------------------------------
  4386. INT 62 - Cswitch - SLEEP
  4387.     AH = 05h
  4388.     BX = seconds to sleep
  4389. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  4390. --------N-6205-------------------------------
  4391. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4392.     AH = 05h
  4393.     ???
  4394. Return: CF clear if successful
  4395.     CF set on error
  4396.         AL = error code
  4397. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4398. --------T-6206-------------------------------
  4399. INT 62 - Cswitch - SUSPEND
  4400.     AH = 06h
  4401. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  4402. --------N-6206-------------------------------
  4403. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4404.     AH = 06h
  4405.     ???
  4406. Return: CF clear if successful
  4407.     CF set on error
  4408.         AL = error code
  4409. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4410.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4411.       consecutive interrupt (64h by default) if it is loaded
  4412. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4413. --------T-6207-------------------------------
  4414. INT 62 - Cswitch - SPAWN
  4415.     AH = 07h
  4416.     ES:BX -> function address to start executing at
  4417.     CX = priority (1-10)
  4418. Return: AX = FFFDh  no free memory control blocks
  4419.        = FFFEh  no free task control blocks
  4420.        = FFFFh  not enough memory to create new task stack
  4421.        = >0        the tcb number of the new task, indicating no error
  4422. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  4423. --------N-6207-------------------------------
  4424. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4425.     AH = 07h
  4426.     DS:SI -> ???
  4427. Return: CF clear if successful
  4428.     CF set on error
  4429.         AL = error code
  4430. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4431. --------T-6208-------------------------------
  4432. INT 62 - Cswitch - WAKE UP TASK
  4433.     AH = 08h
  4434.     BX = tcb identifier
  4435. SeeAlso: AH=05h,AH=06h
  4436. --------N-6208-------------------------------
  4437. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4438.     AH = 08h
  4439.     CX = ???
  4440.     ES:SI -> ??? buffer (see below)
  4441. Return: CF clear if successful
  4442.     CF set on error
  4443.         AL = error code
  4444. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4445.  
  4446. Format of ??? buffer:
  4447. Offset    Size    Description
  4448.  00h  6 BYTEs    hardware address???
  4449.  06h  6 BYTEs    ???
  4450.  0Ch    WORD    ???
  4451.  0Eh    WORD    ???
  4452. ----------6208--CXFFFE-----------------------
  4453. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  4454.     AH = 08h
  4455.     CX = FFFEh
  4456.     DX = FFFFh
  4457. Return: AX = PSP address of resident DBLIBRARY
  4458. Note:    this call does not free the memory allocated to the TSR; the calling
  4459.       code must do the deallocation.
  4460. SeeAlso: INT 62"DBLIBRARY"
  4461. --------T-6209-------------------------------
  4462. INT 62 - Cswitch - SET PRIORITY
  4463.     AH = 09h
  4464.     BX = new base priority (1-10)
  4465. Note:    the lower the priority is numerically, the more often the task will run
  4466. --------N-6209-------------------------------
  4467. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  4468.     AH = 09h
  4469. Return: CF clear if successful
  4470.         AX = handler ID
  4471.     CF set on error
  4472.         AL = error code
  4473. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4474.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4475.       consecutive interrupt (64h by default) if it is loaded
  4476. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4477. SeeAlso: INT 64"BW-NFS"
  4478. --------T-620A-------------------------------
  4479. INT 62 - Cswitch - TEST MESSAGE QUEUE
  4480.     AH = 0Ah
  4481.     DX = queue number (0-63)
  4482. Return: AX = FFFFh bad queue number
  4483.        = 0000h nothing on queue
  4484.          else  number of bytes in first message in queue
  4485. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  4486. --------N-620A-------------------------------
  4487. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  4488.     AH = 0Ah
  4489.     DX = handler ID
  4490. Return: CF clear if successful
  4491.     CF set on error
  4492.         AL = error code
  4493. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4494. SeeAlso: INT 64"BW-NFS"
  4495. --------T-620B-------------------------------
  4496. INT 62 - Cswitch - SEND MESSAGE
  4497.     AH = 0Bh
  4498.     CX = number of bytes to write
  4499.     DS:SI -> buffer
  4500.     DX = queue number (0-63)
  4501. Return: AX = FFFEh triggered by something arriving, redo the call
  4502.        = FFFFh bad queue number
  4503.        = 0000h no message was on queue
  4504.          else  number of bytes in message
  4505. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  4506. --------N-620B-------------------------------
  4507. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  4508.     AH = 0Bh
  4509.     AL = ???
  4510.     DX = ???
  4511.     BP = ???
  4512.     ES:SI -> ???
  4513. Return: CF clear if successful
  4514.     CF set on error
  4515.         AL = error code
  4516. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4517. SeeAlso: INT 64"BW-NFS"
  4518. --------T-620C-------------------------------
  4519. INT 62 - Cswitch - READ MESSAGE
  4520.     AH = 0Ch
  4521.     CX = number of bytes to read
  4522.     DS:SI -> buffer
  4523.     DX = queue number (0-63)
  4524. Return: AX = FFFFh bad queue number
  4525.          else  number of bytes transferred
  4526. SeeAlso: AH=0Ah,AH=0Bh
  4527. --------N-620C-------------------------------
  4528. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  4529.     AH = 0Ch
  4530.     DX = ???
  4531.     BP = ???
  4532. Return: CF clear if successful
  4533.     CF set on error
  4534.         AL = error code
  4535. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4536.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4537.       consecutive interrupt (64h by default) if it is loaded
  4538. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  4539. SeeAlso: INT 64"BW-NFS"
  4540. --------T-620D-------------------------------
  4541. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  4542.     AH = 0Dh
  4543. SeeAlso: AH=0Eh"Cswitch"
  4544. --------N-620D-------------------------------
  4545. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  4546.     AH = 0Dh
  4547. Return: CF clear if successful
  4548.     CF set on error
  4549.         AL = error code
  4550. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4551. --------T-620E-------------------------------
  4552. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  4553.     AH = 0Eh
  4554. SeeAlso: AH=0Dh"Cswitch"
  4555. --------N-620E-------------------------------
  4556. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  4557.     AH = 0Eh
  4558. Return: CF clear if successful
  4559.     CF set on error
  4560.         AL = error code
  4561. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4562. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4563. --------T-620F-------------------------------
  4564. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  4565.     AH = 0Fh
  4566.     ES:BX -> command line
  4567.     CX = priority (1-10)
  4568.     DX = background flag (nonzero allows loading to EMS)
  4569. Return: AX = 0000h task loader queue is full
  4570.        = 0001h  no error
  4571. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  4572. --------N-620F-------------------------------
  4573. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  4574.     AH = 0Fh
  4575. Return: CF clear if successful
  4576.     CF set on error
  4577.         AL = error code
  4578. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4579.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4580.       consecutive interrupt (64h by default) if it is loaded
  4581. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4582. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4583. --------T-6210-------------------------------
  4584. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  4585.     AH = 10h
  4586. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  4587. --------N-6210-------------------------------
  4588. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  4589.     AH = 10h
  4590. Return: CF clear if no critical section active
  4591.     CF set if in critical section
  4592. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  4593. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  4594. --------T-6211-------------------------------
  4595. INT 62 - Cswitch - GET TCB INFORMATION
  4596.     AH = 11h
  4597.     ES:BX -> a pointer which will be set to the tcb address
  4598. Return: AX = tcb indentifier
  4599. SeeAlso: AH=12h
  4600. --------N-6211-------------------------------
  4601. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  4602.     AH = 11h
  4603.     ES:SI -> ???
  4604. Return: CF clear
  4605. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4606. --------T-6212-------------------------------
  4607. INT 62 - Cswitch - GET TCB ADDRESS
  4608.     AH = 12h
  4609.     ES:BX -> a pointer which will be set to the tcb table address
  4610. Return: AX = tcb indentifier
  4611. SeeAlso: AH=11h"Cswitch"
  4612. --------N-6212-------------------------------
  4613. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  4614.     AH = 12h
  4615. Return: CF clear if successful
  4616.         AX = socket number??? (memory variable incremented after reading)
  4617.     CF set on error
  4618.         AL = error code
  4619. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4620.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4621.       consecutive interrupt (64h by default) if it is loaded
  4622. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4623. --------T-6213-------------------------------
  4624. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  4625.     AH = 13h
  4626. Return: AX = result
  4627.         FFFCh no Memory Control Blocks available
  4628.         FFFDh no TCBs available
  4629.         FFFEh insufficient memory
  4630.         FFFFh cannot open file
  4631.         0000h load in progress (not done yet)
  4632.         else  tcb indentifier
  4633. SeeAlso: AH=0Fh
  4634. --------N-6213-------------------------------
  4635. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4636.     AH = 13h
  4637.     CX = ???
  4638. Return: CF clear if successful
  4639.         AL = 00h
  4640.     CF set on error
  4641.         AL = error code
  4642. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4643. --------N-6214-------------------------------
  4644. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4645.     AH = 14h
  4646.     ES:SI -> ???
  4647. Return: CF clear if successful
  4648.         AL = 00h
  4649.     CF set on error
  4650.         AL = error code
  4651. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4652. --------N-6215-------------------------------
  4653. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  4654.     AH = 15h
  4655. Return: CF clear if successful
  4656.         AX = ??? (destroyed???)
  4657.     CF set on error
  4658.         AL = error code
  4659. Notes:    call this function after reading the "ETHDEV27" device
  4660.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4661.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4662.       consecutive interrupt (64h by default) if it is loaded
  4663. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4664. --------N-6216-------------------------------
  4665. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4666.     AH = 16h
  4667.     ???
  4668. Return: CF clear if successful
  4669.     CF set on error
  4670.         AL = error code
  4671. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4672. --------N-6217-------------------------------
  4673. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  4674.     AH = 17h
  4675.     DX = segment of ???
  4676. Return: CF clear
  4677. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4678. --------N-6218-------------------------------
  4679. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  4680.     AH = 18h
  4681. Return: CF clear if successful
  4682.     CF set on error
  4683.         AL = error code
  4684. Notes:    calls function 17h after EMS allocated and mapped
  4685.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4686.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4687.       consecutive interrupt (64h by default) if it is loaded
  4688. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  4689. --------R-6247-------------------------------
  4690. INT 62 - PC Tools v7 COMMUTE - ???
  4691.     AH = 47h
  4692.     AL = subfunction (00h-31h)
  4693.     ???
  4694.     CF set
  4695. Return: ???
  4696. --------R-6248-------------------------------
  4697. INT 62 - PC Tools v7 COMMUTE - ???
  4698.     AH = 48h
  4699.     AL = ???
  4700.     ???
  4701.     CF set
  4702. Return: ???
  4703. --------R-6249-------------------------------
  4704. INT 62 - PC Tools v7 COMMUTE - ???
  4705.     AH = 49h
  4706.     ???
  4707.     CF set
  4708. Return: ???
  4709. Note:    may be the same as AH=4Ch
  4710. --------R-624A-------------------------------
  4711. INT 62 - PC Tools v7 COMMUTE - ???
  4712.     AH = 4Ah
  4713.     AL = subfunction (00h-46h)
  4714.     ???
  4715.     CF set
  4716. Return: ???
  4717. --------R-624B--BX1234-----------------------
  4718. INT 62 - PC Tools v7 COMMUTE - ???
  4719.     AH = 4Bh
  4720.     BX = 1234h
  4721.     CX = 1234h
  4722.     ES = ???
  4723.     CF set
  4724. Return: ???
  4725. --------R-624C-------------------------------
  4726. INT 62 - PC Tools v7 COMMUTE - ???
  4727.     AH = 4Ch
  4728.     BL = subfunction
  4729.         00h ???
  4730.         02h ???
  4731. Return: CF clear if successful
  4732.     CF set on error
  4733. --------R-626262-----------------------------
  4734. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  4735.     AX = 6262h
  4736.     CF set
  4737. Return: AX = 0000h
  4738.     BX = segment of resident code's PSP
  4739. --------N-62FE-------------------------------
  4740. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  4741.     AH = FEh
  4742.     AL = direction
  4743.         00h map in driver's memory block
  4744.         01h map out driver's memory block
  4745. Return: CF clear if successful
  4746.     CF set on error
  4747.         AL = error code
  4748. Notes:    this function is supported by at least the SLIP and ODI versions of
  4749.       ETHDEV.SYS
  4750.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4751.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4752.       consecutive interrupt (64h by default) if it is loaded
  4753. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  4754. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  4755. --------*-63---------------------------------
  4756. INT 63 - reserved for user interrupt
  4757. --------d-63---------------------------------
  4758. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  4759. Notes:    this vector stores the last four bytes of the parameter table for
  4760.       hard disk 0
  4761. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  4762. ----------63---------------------------------
  4763. INT 63 - Oracle SQL Protected Mode Executive - ???
  4764. --------d-63---------------------------------
  4765. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  4766.    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if INT 13
  4767.    has been moved there) and places the old value here
  4768. ----------63---------------------------------
  4769. INT 63 - Kofax KF9X00 image manipulation card interface
  4770. --------Q-63---------------------------------
  4771. INT 63 - DESQview/X - SOCKET API
  4772. Notes:    parameters are passed by patching!! data field immediately following
  4773.       the entry point, as detailed below; the preferred method for calling
  4774.       the socket API is via INT 15/AX=DE2Eh
  4775.     the installation check consists of testing for the string "dvxunix"
  4776.       (yes, lowercase) at offset 9 from the interrupt handler start
  4777. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  4778. Index:    installation check;DESQview/X socket interface
  4779.  
  4780. Format of interrupt handler entry:
  4781. Offset    Size    Description
  4782.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  4783.  03h    WORD    offset from following pointer for initial top of local stack
  4784.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  4785.  09h  7 BYTEs    signature "dvxunix"
  4786. --------b-6300-------------------------------
  4787. INT 63 - HP 100LX - MAP HIGH MEMORY
  4788.     AH = 00h
  4789.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  4790.     BX = zero-based logical page
  4791.     CX = page number
  4792.     DX = device ID (00h system ROM, 05h plugin, etc.)
  4793. Return: ???
  4794. SeeAlso: AH=01h
  4795. --------N-6300-------------------------------
  4796. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  4797.     AH = 00h
  4798.     DS:BX -> DWORD containing IP address (big-endian)
  4799. Return: CF clear if successful
  4800.     CF set on error
  4801.     AX destroyed
  4802. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4803.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4804.       consecutive interrupt (64h by default) if it is loaded
  4805. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  4806. --------b-6301-------------------------------
  4807. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  4808.     AH = 01h
  4809.     AL = function (00h save, 01h restore)
  4810.     ???
  4811. Return: ???
  4812. --------N-6301-------------------------------
  4813. INT 63 - BW-TCP - TCPIP.SYS - ???
  4814.     AH = 01h
  4815.     ES:BX -> ???
  4816.     ???
  4817. Return: ???
  4818. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  4819.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  4820.       consecutive interrupt (64h by default) if it is loaded
  4821. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  4822. --------N-6302-------------------------------
  4823. INT 63 - BW-TCP - TCPIP.SYS - ???
  4824.     AH = 02h
  4825.     ???
  4826. Return: ???
  4827. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  4828. --------N-6303-------------------------------
  4829. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  4830.     AH = 03h
  4831.     DS:SI -> buffer for DWORD IP address (big-endian)
  4832. Return: AX destroyed
  4833.     CF clear if successful
  4834.     CF set on error
  4835. Note:    this call may use ARP or RARP to determine the address
  4836. --------N-6304-------------------------------
  4837. INT 63 - BW-TCP - TCPIP.SYS - ???
  4838.     AH = 04h
  4839.     ???
  4840. Return: ???
  4841. --------N-6305-------------------------------
  4842. INT 63 - BW-TCP - TCPIP.SYS - ???
  4843.     AH = 05h
  4844.     DS:BX -> ???
  4845.     ES:SI -> ???
  4846. Return: ???
  4847. --------N-6306-------------------------------
  4848. INT 63 - BW-TCP - TCPIP.SYS - ???
  4849.     AH = 06h
  4850.     ???
  4851. Return: ???
  4852. --------N-6307-------------------------------
  4853. INT 63 - BW-TCP - TCPIP.SYS - ???
  4854.     AH = 07h
  4855.     ???
  4856. Return: ???
  4857. --------N-6308-------------------------------
  4858. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  4859.     AH = 08h
  4860.     DS:BX -> DWORD containing IP address
  4861. Return: CF clear if successful
  4862.     CF set on error
  4863.     ???
  4864. --------N-6309-------------------------------
  4865. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  4866.     AH = 09h
  4867.     BL = handler type
  4868.     ES:SI -> FAR handler of specified type
  4869. Return: ???
  4870. SeeAlso: AH=0Ah,AH=0Dh
  4871. --------N-630A-------------------------------
  4872. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  4873.     AH = 0Ah
  4874.     BL = handler type
  4875. Return: CF clear if successful
  4876.     CF set on error (no handler of specified type installed)
  4877. SeeAlso: AH=09h
  4878. --------N-630B-------------------------------
  4879. INT 63 - BW-TCP - TCPIP.SYS - ???
  4880.     AH = 0Bh
  4881.     AL = ???
  4882.     DL = ???
  4883.     DS:BX -> ???
  4884.     ES:SI -> ???
  4885. Return: ???
  4886. --------N-630C-------------------------------
  4887. INT 63 - BW-TCP - TCPIP.SYS - ???
  4888.     AH = 0Ch
  4889.     ???
  4890. Return: ???
  4891. --------N-630D-------------------------------
  4892. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  4893.     AH = 0Dh
  4894.     ???
  4895. Return: ???
  4896. Note:    if not already installed, installs a type 06h handler with AH=09h
  4897. SeeAlso: AH=09h
  4898. --------N-630E-------------------------------
  4899. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  4900.     AH = 0Eh
  4901.     ???
  4902. Return: ???
  4903. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  4904. --------N-630F-------------------------------
  4905. INT 63 - BW-TCP - TCPIP.SYS - ???
  4906.     AH = 0Fh
  4907.     AL = ???
  4908.     SI = ???
  4909.     DS:DI -> ???
  4910.     ???
  4911. Return: ???
  4912. --------N-6310-------------------------------
  4913. INT 63 - BW-TCP - TCPIP.SYS - ???
  4914.     AH = 10h
  4915.     DS:DI -> ???
  4916.     ???
  4917. Return: ???
  4918. --------N-6311-------------------------------
  4919. INT 63 - BW-TCP - TCPIP.SYS - ???
  4920.     AH = 11h
  4921.     ???
  4922. Return: ???
  4923. --------N-6312-------------------------------
  4924. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  4925.     AH = 12h
  4926.     DS:SI -> ???
  4927.     ES:BP -> ???
  4928. Return: ???
  4929. SeeAlso: INT 61/AH=23h
  4930. --------N-6313-------------------------------
  4931. INT 63 - BW-TCP - TCPIP.SYS - NOP
  4932.     AH = 13h
  4933. Return: nothing
  4934. --------N-6314-------------------------------
  4935. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  4936.     AH = 14h
  4937.     BX = network descriptor???
  4938.     DS:SI -> ???
  4939.     ES:BP -> ???
  4940. Return: ???
  4941. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  4942. --------N-6315-------------------------------
  4943. INT 63 - BW-TCP - TCPIP.SYS - ???
  4944.     AH = 15h
  4945.     DS:DI -> ???
  4946.     ???
  4947. Return: ???
  4948. --------N-6316-------------------------------
  4949. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  4950.     AH = 16h
  4951.     DS:DI -> ???
  4952. Return: ???
  4953. Note:    calls AH=17h after preprocessing
  4954. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  4955. --------N-6317-------------------------------
  4956. INT 63 - BW-TCP - TCPIP.SYS - ???
  4957.     AH = 17h
  4958.     DS:DI -> ???
  4959.     ???
  4960. Return: ???
  4961. SeeAlso: AH=18h
  4962. --------N-6318-------------------------------
  4963. INT 63 - BW-TCP - TCPIP.SYS - ???
  4964.     AH = 18h
  4965.     DS:DI -> ???
  4966.     ???
  4967. Return: ???
  4968. Note:    same as AH=17h, except performed with interrupts disabled
  4969. SeeAlso: AH=17h
  4970. --------N-6319-------------------------------
  4971. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  4972.     AH = 19h
  4973.     DS:DI -> ???
  4974.     ???
  4975. Return: BX = number of bytes NOT written
  4976.     ???
  4977. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  4978. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  4979. --------N-631A-------------------------------
  4980. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  4981.     AH = 1Ah
  4982.     CX = maximum number of bytes to read
  4983.     ES:BP -> ???
  4984.     ???
  4985. Return: CX = number of bytes actually read
  4986.     ???
  4987. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  4988. --------N-631B-------------------------------
  4989. INT 63 - BW-TCP - TCPIP.SYS - ???
  4990.     AH = 1Bh
  4991.     CX = ???
  4992.     ES:BP -> ???
  4993. Return: DX = ???
  4994.     ???
  4995. --------N-631C-------------------------------
  4996. INT 63 - BW-TCP - TCPIP.SYS - ???
  4997.     AH = 1Ch
  4998.     DS:DI -> ???
  4999.     ???
  5000. Return: ???
  5001. Note:    calls AH=17h with ???
  5002. SeeAlso: AH=17h
  5003. --------N-631D-------------------------------
  5004. INT 63 - BW-TCP - TCPIP.SYS - ???
  5005.     AH = 1Dh
  5006.     ???
  5007. Return: ???
  5008. --------N-631E-------------------------------
  5009. INT 63 - BW-TCP - TCPIP.SYS - ???
  5010.     AH = 1Eh
  5011.     DS:BX -> DWORD containing IP address (big-endian)
  5012.     ???
  5013. Return: CF clear if successful
  5014.     CF set on error
  5015.     ???
  5016. --------N-631F-------------------------------
  5017. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  5018.     AH = 1Fh
  5019.     BX = socket number
  5020.     ES:SI -> FAR function for ???
  5021. Return: CF clear if successful
  5022.     CF set on error (out of slots)
  5023. SeeAlso: AH=20h
  5024. --------N-6320-------------------------------
  5025. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  5026.     AH = 20h
  5027.     BX = socket number
  5028. Return: CF clear if successful
  5029.     CF set on error (not set)
  5030. SeeAlso: AH=1Fh
  5031. --------N-6321-------------------------------
  5032. INT 63 - BW-TCP - TCPIP.SYS - ???
  5033.     AH = 21h
  5034.     ES:SI -> ???
  5035. Return: ???
  5036. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  5037. --------N-6322-------------------------------
  5038. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  5039.     AH = 22h
  5040. Return: CF clear
  5041. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  5042.       if the counter reaches zero
  5043. --------N-6323-------------------------------
  5044. INT 63 - BW-TCP - TCPIP.SYS - ???
  5045.     AH = 23h
  5046.     DS:BX -> ???
  5047.     ES:SI -> 6-byte buffer for ???
  5048. Return: CF clear if successful
  5049.     CF set on error
  5050. --------N-6324-------------------------------
  5051. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  5052.     AH = 24h
  5053. Return: AX = socket number (0400h-FFFFh)
  5054. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5055.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5056.       consecutive interrupt (64h by default) if it is loaded
  5057. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  5058. --------N-6325-------------------------------
  5059. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  5060.     AH = 25h
  5061. Return: CL:CH:DL:DH = caller's Internet address
  5062. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  5063. --------N-6326-------------------------------
  5064. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  5065.     AH = 26h
  5066.     CL:CH:DL:DH = Internet address
  5067. Return: nothing
  5068. Note:    this function sets a different variable than AH=25h returns
  5069. SeeAlso: AH=25h
  5070. --------N-6327-------------------------------
  5071. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  5072.     AH = 27h
  5073.     BX = ???
  5074.     ES:SI -> ???
  5075. Return: ???
  5076. --------N-6328-------------------------------
  5077. INT 63 - BW-TCP - TCPIP.SYS - ???
  5078.     AH = 28h
  5079.     ???
  5080. Return: ???
  5081. --------N-6329-------------------------------
  5082. INT 63 - BW-TCP - TCPIP.SYS - ???
  5083.     AH = 29h
  5084.     ???
  5085. Return: ???
  5086. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5087.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5088.       consecutive interrupt (64h by default) if it is loaded
  5089. --------*-64---------------------------------
  5090. INT 64 - reserved for user interrupt
  5091. --------d-64---------------------------------
  5092. INT 64 - Adaptec controllers - DRIVE 1 DATA
  5093. Notes:    this vector stores the first four bytes of the parameter table for
  5094.       hard disk 1
  5095.     these vectors are used by the following Adaptec controllers:
  5096.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  5097.     these vectors are NOT used by the following Adaptec controllers:
  5098.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  5099. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5100. ----------64---------------------------------
  5101. INT 64 - Oracle SQL Protected Mode Executive - ???
  5102. --------N-64---------------------------------
  5103. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  5104. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  5105.       versions do not use this interrupt for IPX/SPX access, instead
  5106.       getting an entry point from INT 2F/AX=7A00h
  5107. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  5108. --------h-64---------------------------------
  5109. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5110. SeeAlso: INT 65"DG10",INT 66"DG10"
  5111. --------r-64---------------------------------
  5112. INT 64 - Extended Batch Language v3.14+
  5113.     AH = function
  5114.         00h to 5Fh chained to previous handler
  5115.         60h to 6Ch reserved, return immediately
  5116.         80h to FFh chained to previous handler
  5117.         6Dh (v4.01+) insert tone in queue
  5118.         AL = ???
  5119.         CX = frequency in Hertz
  5120.         DL = duration in clock ticks
  5121.         Return: AL = 00h if note stored
  5122.                = 01h if no room to store
  5123.         6Eh clear ??? counter/flag
  5124.         6Fh return counter/flag that AH=6Eh clears
  5125.         70h ???
  5126.         AL = ???
  5127.         71h ???
  5128.         AL = ???
  5129.         72h ???
  5130.         73h insert byte at end of keyboard buffer
  5131.         AL = byte to insert
  5132.         Return: AL = 00h if byte inserted
  5133.                = 01h if no room to store
  5134.         74h insert byte at front of keyboard buffer
  5135.         AL = byte to insert
  5136.         Return: AL = 00h if byte inserted
  5137.                = 01h if no room to store
  5138.         75h ???
  5139.         76h get keyboard "stack" status
  5140.         AL = 'K' if kbd read will read physical keyboard
  5141.              'S' if it will read EBL internal keyboard buffer
  5142.         AH = ???
  5143.         77h clear internal keyboard buffer
  5144.         78h ???
  5145.         AL = ???
  5146.         79h ???
  5147.         7Ah ???
  5148.         AL = ???
  5149.         7Bh ???
  5150.         AL = ???
  5151.         7Ch ???
  5152.         AL = ???
  5153.         7Dh ???
  5154.         AL = ???
  5155.         7Eh clear buffer for ???
  5156.         7Fh installation check
  5157.         Return: CX = version in BCD
  5158.             DI = segment of ???
  5159.             BX = segment of next program's PSP???
  5160. Program: Extended Batch Language is a batch-file enhancer by Seaware
  5161. Notes:    the chaining does not check whether the interrupt had been hooked
  5162.       before, so if you try to chain when the previous vector was
  5163.       0000h:0000h, you'll be in trouble
  5164.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  5165.       floating-point and extended function packages
  5166. Index:    installation check;EBL|installation check;Extended Batch Language
  5167. --------d-64---------------------------------
  5168. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5169. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  5170.       It can either destroy 4 vectors and take no memory or TSR and take
  5171.       up some memory.
  5172. SeeAlso: INT 65"Pdisk"
  5173. --------N-6401-------------------------------
  5174. INT 64 U - BW-NFS - BWRPC - ???
  5175.     AH = 01h
  5176.     ES:BX -> ??? (at least 8 bytes)
  5177.     ES:BP -> DWORD ???
  5178.     ???
  5179. Return: CF clear if successful
  5180.         ???
  5181.     CF set on error
  5182.         CX = 0000h
  5183. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5184.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5185.       consecutive interrupt (64h by default) if it is loaded
  5186.     the BWRPC installation check consists of determining the interrupt
  5187.       vector assigned to it (two more than the value returned by reading
  5188.       the ETHDEV27 device), and testing whether the word immediately
  5189.       preceding the interrupt handler is 4257h ('BW')
  5190. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  5191. Index:    installation checks;BWRPC
  5192. --------N-6402-------------------------------
  5193. INT 64 U - BW-NFS - BWRPC - ???
  5194.     AH = 02h
  5195.     DS:DI -> ???
  5196. Return: ???
  5197. Note:    this call is passed directly through to INT 62/AH=07h
  5198. SeeAlso: INT 62/AH=07h"ETHDEV"
  5199. --------N-6403-------------------------------
  5200. INT 64 U - BW-NFS - BWRPC - ADD ???
  5201.     AH = 03h
  5202.     AL = ???
  5203.     BP = ???
  5204.     ES:SI -> ???
  5205. Return: ???
  5206. Note:    this call is passed directly through to INT 62/AH=0Bh
  5207. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  5208. --------N-6404-------------------------------
  5209. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  5210.     AH = 04h
  5211.     BP = ???
  5212. Return: ???
  5213. Note:    this call is passed directly through to INT 62/AH=0Ch
  5214. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  5215. --------N-6405-------------------------------
  5216. INT 64 U - BW-NFS - BWRPC - ???
  5217.     AH = 05h
  5218.     CX = ???
  5219. Return: ???
  5220. Note:    this call is passed directly through to INT 62/AH=13h
  5221. SeeAlso: INT 62/AH=13h"ETHDEV"
  5222. --------N-6406-------------------------------
  5223. INT 64 U - BW-NFS - BWRPC - ???
  5224.     AH = 06h
  5225.     ES:SI -> ???
  5226. Return: AL = 00h if CF clear
  5227. Note:    this call is passed directly through to INT 62/AH=14h
  5228. SeeAlso: INT 62/AH=14h"ETHDEV"
  5229. --------N-6407-------------------------------
  5230. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  5231.     AH = 07h
  5232. Return: CX:DX = IP address
  5233. --------N-6410-------------------------------
  5234. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  5235.     AH = 10h
  5236.     AL = ETHDEV function number
  5237.     other registers as appropriate for ETHDEV call
  5238. Return: as returned by ETHDEV
  5239. Note:    this call is passed directly through to INT 62
  5240. SeeAlso: INT 62/AH=00h"ETHDEV"
  5241. --------N-6411-------------------------------
  5242. INT 64 U - BW-NFS - BWRPC - NOP???
  5243.     AH = 11h
  5244. Return: CF clear
  5245. --------N-64FE-------------------------------
  5246. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  5247.     AH = FEh
  5248.     AL = direction
  5249.         00h map in driver's memory block
  5250.         01h map out driver's memory block
  5251. Return: CF clear if successful
  5252.     CF set on error
  5253.         AL = error code
  5254. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  5255. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  5256. --------*-65---------------------------------
  5257. INT 65 - reserved for user interrupt
  5258. --------d-65---------------------------------
  5259. INT 65 - Adaptec controllers - DRIVE 1 DATA
  5260. Note:    this vector stores the second four bytes of the parameter table for
  5261.       hard disk 1
  5262. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  5263. --------h-65---------------------------------
  5264. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5265. SeeAlso: INT 64"DG10",INT 66"DG10"
  5266. --------N-65---------------------------------
  5267. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  5268. --------U-65---------------------------------
  5269. INT 65 - SD.COM v6.2
  5270.    The unregistered version of SD62.COM uses the low byte of this vector to
  5271.    count the number of invocations, displaying a registration reminder each
  5272.    time after the 20th use.
  5273. --------d-65---------------------------------
  5274. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5275. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5276. --------s-65---------------------------------
  5277. INT 65 - Ad Lib SOUND.COM - INTERFACE
  5278.     SI = function number (see also entries below)
  5279.         0000h Init
  5280.         0002h RelTimeStart
  5281.         0003h SetState
  5282.         0004h GetState
  5283.         0005h Flush
  5284.         0006h SetMode
  5285.         0007h GetMode
  5286.         0008h SetRelVolume
  5287.         0009h SetTempo
  5288.         000Ah SetTranspose
  5289.         000Bh GetTranspose
  5290.         000Ch SetActVoice
  5291.         000Dh GetActVoice
  5292.         000Eh PlayNoteDel
  5293.         000Fh PlayNote
  5294.         0010h SetTimbre
  5295.         0011h SetPitch
  5296.         0012h SetTickBeat
  5297.         0013h NoteOn
  5298.         0014h NoteOff
  5299.         0015h Timbre
  5300.         0016h SetPitchBend
  5301.         0017h WaveForm
  5302.     ES:BX -> arguments
  5303. Note:    the installation check consists of checking for the signature block
  5304.       immediately preceding the interrupt handler (see below)
  5305. SeeAlso: SI=8000h
  5306. Index:    installation check;Ad Lib SOUND.COM
  5307.  
  5308. Format of signature block:
  5309. Offset    Size    Description
  5310.  00h    WORD    version number
  5311.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  5312.  15h    BYTE    01h
  5313.  16h    BYTE    01h
  5314.  17h    BYTE    00h
  5315. --------s-65----SI0000-----------------------
  5316. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  5317.     SI = 0000h
  5318. --------s-65----SI0003-----------------------
  5319. INT 65 - Ad Lib SOUND.COM - SET STATE
  5320.     SI = 0003h
  5321.     ES:BX -> WORD state = 0000h disabled
  5322.                 = 0001h enabled
  5323. SeeAlso: SI=0004h
  5324. --------s-65----SI0004-----------------------
  5325. INT 65 - Ad Lib SOUND.COM - GET STATE
  5326.     SI = 0004h
  5327. Return: AX = 0000h all done playing sounds
  5328.        = else  still playing sounds
  5329. SeeAlso: SI=0003h
  5330. --------s-65----SI0006-----------------------
  5331. INT 65 - Ad Lib SOUND.COM - SET MODE
  5332.     SI = 0006h
  5333.     ES:BX -> WORD mode = 0000h melodic
  5334.                = 0001h percussive
  5335. SeeAlso: SI=0007h
  5336. --------s-65----SI0007-----------------------
  5337. INT 65 - Ad Lib SOUND.COM - GET MODE
  5338.     SI = 0007h
  5339. Return: AX = 0000h melodic
  5340.        = 0001h percussive
  5341. SeeAlso: SI=0006h
  5342. --------s-65----SI000C-----------------------
  5343. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  5344.     SI = 000Ch
  5345.     ES:BX -> WORD voice = 0000h to 0008h
  5346. SeeAlso: SI=000Dh
  5347. --------s-65----SI000D-----------------------
  5348. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  5349.     SI = 000Dh
  5350. Return: AX = voice (0000h to 0008h)
  5351. SeeAlso: SI=000Ch
  5352. --------s-65----SI8000-----------------------
  5353. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  5354.     SI = 8000h
  5355. Return: DX:AX -> internal data structures
  5356. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  5357.       Pro Audio Spectrum sound boards
  5358. SeeAlso: SI=8001h
  5359. --------s-65----SI8001-----------------------
  5360. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  5361.     SI = 8001h
  5362. Return: AX = ???
  5363.     DX = number of voices??? (09h or 0Bh)
  5364. SeeAlso: SI=8000h
  5365. --------s-65----SI8002-----------------------
  5366. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  5367.     SI = 8002h
  5368. SeeAlso: SI=8003h
  5369. --------s-65----SI8003-----------------------
  5370. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  5371.     SI = 8003h
  5372. SeeAlso: SI=8002h
  5373. --------s-65----SI8004-----------------------
  5374. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  5375.     SI = 8004h
  5376. Return: AX = ??? (0280h)
  5377.     DX = ??? (01A0h)
  5378. --------s-65----SI8005-----------------------
  5379. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  5380.     SI = 8005h
  5381.     ???
  5382. Return: ???
  5383. SeeAlso: SI=8000h
  5384. --------S-65---------------------------------
  5385. INT 65 U - EZRECV v1.0 - API
  5386.     AX = function
  5387.         0000h ???
  5388.         Return: AX = ??? or FFFFh
  5389.         0001h ???
  5390.         Return: AX = status (0000h or 0001h)
  5391.         0002h ???
  5392.         Return: AX = status (0000h or 0001h)
  5393.         0003h set ??? to 0001h
  5394.         Return: AX = 0000h
  5395.         0004h ???
  5396.         Return: AX = ???
  5397. Return: BH = COM port being used
  5398.     BL = speed???
  5399.     CH = ???
  5400.     CL = ???
  5401.     DX = ???
  5402.     DS = ???
  5403.     ES = EZRECV data segment
  5404. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  5405. --------*-66---------------------------------
  5406. INT 66 - reserved for user interrupt
  5407. --------d-66---------------------------------
  5408. INT 66 - Adaptec controllers - DRIVE 1 DATA
  5409. Note:    this vector stores the third four bytes of the parameter table for
  5410.       hard disk 1
  5411. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  5412. --------h-66---------------------------------
  5413. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  5414. SeeAlso: INT 64"DG10"
  5415. --------N-66---------------------------------
  5416. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  5417. Program: TurboNET is a NetBIOS-based file redirector and server
  5418. Note:    hooked but not used (IRET) by both redirector and server; called from
  5419.       server's INT 28 handler
  5420. SeeAlso: INT 2F/AX=8100h
  5421. --------d-66---------------------------------
  5422. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5423. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  5424. --------W-66---------------------------------
  5425. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  5426. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  5427.       which will expire and call INT 66.  This timer can be used to
  5428.       calculate elapsed execution time etc.
  5429. --------K-66---------------------------------
  5430. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  5431. Return: immediately (IRET)
  5432. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  5433. Note:    the installation check consists of testing for the signature bytes
  5434.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment;
  5435.       Newkey may use any interrupt from 60h through 67h and will install
  5436.       on the highest vector in this range which is unused (normally 66h)
  5437. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  5438.       before falling back to INT 60-67, but only uses the last of these
  5439.       ranges in v5.4
  5440. SeeAlso: INT 2F/AX=E300h
  5441. Index: installation checks;Newkey|Newkey;installation check
  5442. --------F-6601-------------------------------
  5443. INT 66 - BitFax Scheduler - SET MODE???
  5444.     AH = 01h
  5445. SeeAlso: AH=02h
  5446. --------F-6602-------------------------------
  5447. INT 66 - BitFax Scheduler - SET MODE???
  5448.     AH = 02h
  5449. SeeAlso: AH=01h
  5450. --------F-6603-------------------------------
  5451. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  5452.     AH = 03h
  5453.     ???
  5454. Return: ???
  5455. SeeAlso: AH=05h
  5456. --------F-6604-------------------------------
  5457. INT 66 - BitFax Scheduler - GET STATUS???
  5458.     AH = 04h
  5459. Return: AX = ??? (0000h or 0001h)
  5460.     DX = BitSched version???  (for versions >= 3.00)
  5461.         9796h (ver. 3.00)
  5462.         97E6h (ver. 3.02)
  5463.         92D0h (ver. 3.04.06)
  5464.         9510h (ver. 3.06.02)
  5465. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  5466. --------F-6605-------------------------------
  5467. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  5468.     AH = 05h
  5469.     BX:CX -> command block (see below)
  5470.     ???
  5471. Return: ???
  5472. SeeAlso: AH=03h
  5473.  
  5474. Format of command block:
  5475. Offset    Size    Description
  5476.  00h 18 BYTEs    configuration bytes???
  5477.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  5478.  52h    BYTEs    ASCIZ directory containing BitFax executables
  5479.  92h    BYTEs    ASCIZ telephone number
  5480.  C2h    BYTE    00h don't send cover page
  5481.         01h send cover page
  5482.  C3h 15 BYTEs    configuration bytes???
  5483.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  5484.         configuration information???)
  5485. 122h    BYTEs    configuration bytes???
  5486. 12Ch    BYTE    00h don't send cover page
  5487.         01h send cover page
  5488. 12Dh  7 BYTEs    configuration bytes???
  5489. 134h    BYTEs    ASCIZ path of file to send
  5490. 174h    BYTEs    more configuration bytes???
  5491.     ???
  5492. --------F-6606-------------------------------
  5493. INT 66 - BitFax Scheduler - SET MODE???
  5494.     AH = 06h
  5495. Return: DX = BitSched version??? (same as AH=04h)
  5496. SeeAlso: AH=04h
  5497. --------s-660688-----------------------------
  5498. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  5499.     AX = 0688h
  5500.     DS:SI -> SNDSTRUC (see below)
  5501. Return: ???
  5502. Program: The IBMSND driver is part of John W. Ratcliff's
  5503.        The IBM Digitized Sound Package
  5504. Note:    the installation check consists of looking for a valid signature
  5505.       string six bytes prior to the interrupt handler; this string may
  5506.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  5507.       determine whether IBMSND is installed)
  5508. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  5509.  
  5510. Format of SNDSTRUC:
  5511. Offset    Size    Description
  5512.  00h    DWORD    -> audio data
  5513.  04h    WORD    length of audio data in bytes
  5514.  06h    DWORD    -> playback status flag
  5515.  0Ah    WORD    playback frequency
  5516. --------s-660689-----------------------------
  5517. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  5518.     AX = 0689h
  5519. Return: AX = status
  5520.         0000h no sound playing
  5521.         0001h sound effect is currently playing
  5522. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  5523. --------s-66068A-----------------------------
  5524. INT 66 - IBMSND driver - PREFORMAT SOUND
  5525.     AX = 068Ah
  5526.     DS:SI -> SNDSTRUC (see AX=0688h)
  5527. Desc:    convert audio data into output hardware format
  5528. SeeAlso: AX=068Bh
  5529. --------s-66068B-----------------------------
  5530. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  5531.     AX = 068Bh
  5532.     DS:SI -> SNDSTRUC (see AX=0688h)
  5533. Return: AX = ???
  5534. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  5535. --------s-66068C-----------------------------
  5536. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  5537.     AX = 068Ch
  5538. Return: AX = capabilities (see below)
  5539.     DX = playback rate if fixed-frequency playback
  5540. SeeAlso: AX=0689h,AX=068Dh
  5541.  
  5542. Bitfields for capabilities:
  5543. Bit(s)    Description
  5544.  0    can play audio in background
  5545.  1    data is massaged
  5546.  2    driver plays at fixed frequency, resampling input data to fit
  5547.  3    driver uses timer interrupt
  5548. --------s-66068D-----------------------------
  5549. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  5550.     AX = 068Dh
  5551. Return: AX = current playback address
  5552. Desc:    determine what point in the audio data the playback has reached, for
  5553.       synchronization with video or animation effects
  5554. Notes:    this function applies to background playback only
  5555.     the reported address may be an approximation rather than the exact
  5556.       address
  5557. SeeAlso: AX=068Ch,AX=0691h
  5558. --------s-66068E-----------------------------
  5559. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  5560.     AX = 068Eh
  5561.     BX:DX -> callback function
  5562.         0000h:0000h to disable callback
  5563.     DS = value to load into DS when calling the callback function
  5564. Desc:    specify the function to be called when playback of a sound effect is
  5565.       completed
  5566. Note:    the callback function will typically be called during a hardware
  5567.       interrupt, so all the usual precautions should be taken except for
  5568.       preserving registers
  5569. SeeAlso: AX=0691h
  5570. --------s-66068F-----------------------------
  5571. INT 66 - IBMSND driver - STOP CURRENT SOUND
  5572.     AX = 068Fh
  5573. Desc:    cause any currently-playing sound effect to be terminated
  5574. SeeAlso: AX=0688h,AX=068Bh
  5575. --------s-660690-----------------------------
  5576. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  5577.     AX = 0690h
  5578. Note:    this function is no longer implemented
  5579. --------s-660691-----------------------------
  5580. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  5581.     AX = 0691h
  5582. Return: AX:DX -> current callback function
  5583.     BX = original caller's DS register
  5584. Program: The IBMSND driver is part of John W. Ratcliff's
  5585.        The IBM Digitized Sound Package
  5586. SeeAlso: AX=068Eh
  5587. --------s-660701-----------------------------
  5588. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  5589.     AX = 0701h
  5590. Return: AX = digitized sound capabilities
  5591.         0000h if digitized sound driver (functions 06xxh) not available
  5592. Note:    the installation check for the MIDI driver is to test for the signature
  5593.       "MIDI" six bytes before the interrupt handler
  5594. SeeAlso: AX=0688h
  5595. --------n-6610-------------------------------
  5596. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  5597.     AH = 10h
  5598. Return: CF clear
  5599.     AX = 0000h
  5600.     BX = ??? (0012h)
  5601.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  5602. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5603.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5604.       Corporation which makes applications pen-aware
  5605. --------n-6611-------------------------------
  5606. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5607.     AH = 11h
  5608.     DX:BX -> new handler for ???
  5609. Return: CF clear
  5610.     AX = 0000h
  5611.     DX:BX -> old handler for ??? (points at RETF by default)
  5612. --------n-6612-------------------------------
  5613. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  5614.     AH = 12h
  5615. Return:    CF clear
  5616.     AX = 0000h
  5617. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  5618.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  5619. SeeAlso: AH=13h
  5620. --------n-6613-------------------------------
  5621. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  5622.     AH = 13h
  5623. Return: CF clear
  5624.     other register as returned by INT 33/AX=0000h
  5625. SeeAlso: AH=12h
  5626. --------n-6614-------------------------------
  5627. INT 66 - PenDOS - TDMOUSE.EXE - ???
  5628.     AH = 14h
  5629.     BX = ???
  5630.     CX = ???
  5631. Return: CF clear
  5632.     AX = 0000h
  5633. --------n-6615-------------------------------
  5634. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  5635.     AH = 15h
  5636.     DX:BX -> new handler for ???
  5637. Return: CF clear
  5638.     AX = 0000h
  5639.     DX:BX -> old handler (points at RETF by default)
  5640. --------n-6616-------------------------------
  5641. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  5642.     AH = 16h to 1Fh
  5643. Return: CF set
  5644. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  5645.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  5646.       Corporation which makes applications pen-aware
  5647. --------n-6621-------------------------------
  5648. INT 66 - PenDOS - PINK - ???
  5649.     AH = 21h
  5650. Return: CF clear if successful
  5651.     CF set on error
  5652. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5653. --------n-6622-------------------------------
  5654. INT 66 - PenDOS - PINK - ???
  5655.     AH = 22h
  5656.     DX:BX -> ???
  5657.     CL = ???
  5658. Return: CF clear if successful
  5659.     CF set on error
  5660.     ???
  5661. SeeAlso: AH=24h
  5662. --------n-6623-------------------------------
  5663. INT 66 - PenDOS - PINK - ???
  5664.     AH = 23h
  5665.     ???
  5666. Return: CF clear if successful
  5667.     CF set on error
  5668.     ???
  5669. --------n-6624-------------------------------
  5670. INT 66 - PenDOS - PINK - ???
  5671.     AH = 24h
  5672.     DX:BX -> ???
  5673.     CL = ???
  5674. Return: CF clear if successful
  5675.     CF set on error
  5676.     ???
  5677. SeeAlso: AH=22h
  5678. --------n-6625-------------------------------
  5679. INT 66 - PenDOS - PINK - ???
  5680.     AH = 25h
  5681.     CL = ??? (NOP if 00h)
  5682.     ???
  5683. Return: CF clear if successful
  5684.     CF set on error
  5685.     ???
  5686. --------n-6627-------------------------------
  5687. INT 66 - PenDOS - PINK - ???
  5688.     AH = 27h
  5689.     BL = ???
  5690.     BH = ???
  5691.     CL = ??? (0-3)
  5692.     DL = ??? (> BL)
  5693.     DH = ??? (> BH)
  5694. Return: ???
  5695. --------n-6628-------------------------------
  5696. INT 66 - PenDOS - PINK - ???
  5697.     AH = 28h
  5698.     ???
  5699. Return: CF clear if successful
  5700.     CF set on error
  5701.     ???
  5702. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5703. --------n-6629-------------------------------
  5704. INT 66 - PenDOS - PINK - ???
  5705.     AH = 29h
  5706.     ???
  5707. Return: ???
  5708. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  5709. --------n-662A-------------------------------
  5710. INT 66 - PenDOS - PINK - ???
  5711.     AH = 2Ah
  5712.     DL = ??? (nonzero)
  5713.     DH = ??? (nonzero)
  5714. Return: CF clear if successful
  5715.     CF set on error
  5716.     ???
  5717. --------n-662B-------------------------------
  5718. INT 66 - PenDOS - PINK - ???
  5719.     AH = 2Bh
  5720.     ???
  5721. Return: CF clear if successful
  5722.     CF set on error
  5723.     ???
  5724. --------n-662F-------------------------------
  5725. INT 66 - PenDOS - PINK - INITIALIZE
  5726.     AH = 2Fh
  5727.     ???
  5728. Return: AX = status
  5729.         0000h failed
  5730.         FFFFh successful
  5731.     ???
  5732. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  5733. --------F-663345-----------------------------
  5734. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  5735.     AX = 3345h
  5736. Return: AX = FFFFh error removing TSR
  5737. Note:    the installation check consists of checking for the signature
  5738.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  5739. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  5740. Index:    installation check;BitFax Scheduler
  5741. --------n-6640-------------------------------
  5742. INT 66 - PenDOS - PKEYUS - GET VERSION
  5743.     AH = 40h
  5744. Return: CF clear
  5745.     AX = 0000h
  5746.     BH = major version (02h for version bundled with IBM DOS 6.1)
  5747.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  5748.     DL = ??? (4Eh)
  5749.     DH = ??? (0Eh)
  5750. --------n-6641-------------------------------
  5751. INT 66 - PenDOS - PKEYUS - SET ???
  5752.     AH = 41h
  5753.     BX = ???
  5754.     CL = ??? (08h-20h)
  5755.     DL = screen column??? (<= 50h)
  5756.     DH = screen row???  (<= 3Ch)
  5757. Return: AX = status (0000h successful, 0001h error)
  5758. Note:    this function also sets an internal flag
  5759. SeeAlso: AH=42h,AH=43h
  5760. --------n-6642-------------------------------
  5761. INT 66 - PenDOS - PKEYUS - ???
  5762.     AH = 42h
  5763. Return: CF clear
  5764.     AX = 0000h
  5765. Note:    this function also clears the flag set by AH=41h
  5766. SeeAlso: AH=41h
  5767. --------n-6643-------------------------------
  5768. INT 66 - PenDOS - PKEYUS - ???
  5769.     AH = 43h
  5770.     BX = ???
  5771.     DX = ???
  5772. Return: AX = status
  5773.         0000h if AH=41h flag set
  5774.         else
  5775.         AH = ???
  5776.         AL = ???
  5777.         BX = ???
  5778.         DX = ???
  5779. SeeAlso: AH=41h    
  5780. --------n-6644-------------------------------
  5781. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  5782.     AH = 44h to 4Fh
  5783. Return: CF set
  5784. --------n-6650-------------------------------
  5785. INT 66 - PenDOS - PMOUSE - SET ???
  5786.     AH = 50h
  5787.     BX = ???
  5788.     CH = ???
  5789.     DX = ???
  5790. Return: CF clear
  5791.     AX = 0000h
  5792. --------n-6651-------------------------------
  5793. INT 66 - PenDOS - PMOUSE - NOP
  5794.     AH = 51h
  5795. Return: CF set
  5796. --------n-6652-------------------------------
  5797. INT 66 - PenDOS - PMOUSE - ???
  5798.     AH = 52h
  5799.     BX = ???
  5800.     CL = ???
  5801.     DX = ???
  5802. Return: ???
  5803. --------n-6653-------------------------------
  5804. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  5805.     AH = 53h to 57h
  5806. Return: CF set
  5807. --------n-66---------------------------------
  5808. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  5809.     AH = function (58h-5Fh)
  5810. Note:    these functions exactly duplicate AH=50h-57h
  5811. ----------66AA02-----------------------------
  5812. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  5813.     AX = AA02h
  5814. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  5815. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  5816. --------n-66C5-------------------------------
  5817. INT 66 - PenDOS - VLOAD - API
  5818.     AH = C5h
  5819.     ???
  5820. Return: ???
  5821. --------t-66FFFBBXFFFB-----------------------
  5822. INT 66 - MicroHelp Stay-Res Plus - ???
  5823.     AX = FFFBh
  5824.     BX = FFFBh
  5825.     ???
  5826. Return: ???
  5827. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  5828. --------t-66FFFEBXFFFE-----------------------
  5829. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  5830.     AX = FFFEh
  5831.     BX = FFFEh
  5832. Return: only if unsuccessful
  5833. Notes:    installation check is for the interrupt handler to begin with the bytes
  5834.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  5835.       appear at offset 0005h (older versions) or the offset returned by
  5836.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  5837.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  5838.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  5839. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  5840. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  5841. Index:    installation check;Personal Calendar|installation check;CAL
  5842. --------t-66FFFFBXFFF0-----------------------
  5843. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  5844.     AX = FFFFh
  5845.     BX = FFF0h
  5846. Return: DI = offset of program name in interrupt handler segment
  5847. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  5848. --------d-67---------------------------------
  5849. INT 67 - Adaptec controllers - DRIVE 1 DATA
  5850. Note:    this vector stores the last four bytes of the parameter table for
  5851.       hard disk 1
  5852. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  5853. --------d-67---------------------------------
  5854. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  5855. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  5856. --------I-67---------------------------------
  5857. INT 67 - Sangoma CCPOP 3270 resident module
  5858. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  5859. --------U-67---------------------------------
  5860. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  5861. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  5862.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  5863. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  5864.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  5865.       the signature value 434Ch:4F4Bh ('CLOK')
  5866. --------N-6700-------------------------------
  5867. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  5868.     AH = 00h
  5869.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5870. Return: AL = status (see below)
  5871. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  5872.  
  5873. Values for status:
  5874.  00h    successful
  5875.  01h    invalid function
  5876.  02h    semaphore already locked
  5877.  03h    unable to lock semaphore
  5878.  04h    semaphore space exhausted
  5879.  AH = semaphore owner if status=02h
  5880. --------N-6701-------------------------------
  5881. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  5882.     AH = 01h
  5883.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5884. Return: AL = status (see AH=00h)
  5885.     AH = semaphore owner if status=02h
  5886. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  5887. --------N-6702-------------------------------
  5888. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  5889.     AH = 02h
  5890.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  5891. Return: AL = status (see AH=00h)
  5892.     AH = semaphore owner if status=02h
  5893. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  5894. --------m-671E-------------------------------
  5895. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  5896.     AH = 1Eh
  5897. Return: AH = 00h if installed
  5898.         AL destroyed
  5899.         ES:DI -> ASCII signature "MemLimit"
  5900. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  5901. --------m-671F-------------------------------
  5902. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  5903.     AH = 1Fh
  5904.     DS:SI -> request packet (see below)
  5905. Return: AH = status (00h successful, 84h invalid function code, etc.)
  5906. SeeAlso: AH=1Eh
  5907.  
  5908. Format of request packet:
  5909. Offset    Size    Description
  5910.  00h    WORD    function code (00h-0Fh)
  5911.  02h    WORD    return code (see below)
  5912.  04h  4 BYTEs    ???
  5913.  08h    WORD    ???
  5914.     ???
  5915.  
  5916. Values for return code:
  5917.  00h    unknown request
  5918.  01h    invalid parameter for VCPI limit
  5919.  02h    VCPI limit set
  5920.  03h    invalid parameter for EMS limit
  5921.  04h    EMS limit set
  5922.  05h    DPMI disabled
  5923.  06h    XMS disabled
  5924.  07h    XMS limit set
  5925.  08h    unable to uninstall
  5926.  09h    unloaded
  5927. --------m-673F--CX5145-----------------------
  5928. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  5929.     AH = 3Fh
  5930.     CX = 5145h ("QE")
  5931.     DX = 4D4Dh ("MM")
  5932. Return: AH = 00h if installed
  5933.         ES:DI -> QEMM API entry point
  5934. Notes:    if no other program has hooked INT 67, an alternate installation
  5935.       check is to test for the string
  5936.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  5937.       handler's segment; the word at offset 12h contains the offset in
  5938.       the handler's segment of the API entry point
  5939.     although this function is still undocumented, Quarterdeck has recently
  5940.       documented two alternate methods for determining the QEMM API entry
  5941.       point, as well as several of the API functions
  5942.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  5943.       the alternate QEMM installation check and entry point functions 00h,
  5944.       02h, and 03h; version 4D only provides the signature string if the
  5945.       commandline argument "DV" is provided
  5946.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  5947.       recognize the returned entry point as providing QEMM's capabilities
  5948.       because a) only functions 0Ch (different from QEMM 0Ch) and
  5949.             1000h-1009h are supported,
  5950.           b) status is returned as for EMS functions, not QEMM funcs
  5951.           c) the protected-mode entry point returned by function 1000h
  5952.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  5953.     the string check mentioned above is not supported by 386MAX
  5954. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  5955. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  5956.  
  5957. Call QEMM entry point with:
  5958.     AH = 00h get QEMM state (documented)
  5959.         Return: CF clear
  5960.             AL = QEMM state
  5961.                 bit 0 set if QEMM turned OFF
  5962.                 bit 1 set if in "Auto" mode
  5963.     AH = 01h set QEMM state (documented)
  5964.         AL = new state
  5965.             bit 0 set: place QEMM in OFF state
  5966.         Return: CF clear if successful
  5967.             CF set on error
  5968.     AH = 02h get ???
  5969.         Return: CF clear
  5970.             AX = segment of ??? data structure
  5971.             Data Structure
  5972.             Offset    Size    Description
  5973.              00h    DWORD    page table entry for ???
  5974.                 ???
  5975.     AH = 03h get QEMM version (documented)
  5976.         Return: CF clear
  5977.             AX = BX = version in BCD
  5978.         Notes:    the most recent official docs state that the version is
  5979.               returned in both AX and BX; older documentation only
  5980.               mentions BX
  5981.             MICEMM returns AX=0001h, BX unchanged
  5982.     AH = 04h allocate 4K page and set AUTO/ON mode
  5983.         Return: CF clear if successful
  5984.                 DX = page number of a 4K page
  5985.             CF set if unable to allocate page
  5986.         Note:    QEMM mode unchanged if not AUTO/OFF
  5987.     AH = 05h free 4K page and turn QEMM off
  5988.         DX = page number returned by function 04h
  5989.         Return: CF clear
  5990.         Note:    QEMM mode unchanged if not AUTO/ON
  5991.     AH = 06h make new mapping context???
  5992.         DX = page number of 4K page to hold page table
  5993.         Return: CF clear
  5994.         Note:    copies page table into given page and then sets ???
  5995.               page table entry to point at copy
  5996.     AH = 07h get mapping context
  5997.         Return: CF clear
  5998.             DX = page number of page table for current mapping
  5999.                 context
  6000.     AH = 08h set mapping context???
  6001.         DX = linear page number of page table
  6002.         Return: CF clear
  6003.     AH = 09h get linear page number for page table entry
  6004.         CX = page table index
  6005.         Return: CF clear
  6006.             DX = linear page number
  6007.     AH = 0Ah set linear page number for page table entry
  6008.         CX = page table index
  6009.         DX = linear page number
  6010.         Return: CF clear
  6011.     AH = 0Bh map 4K pages
  6012.         BX = number of pages
  6013.         CX = first page number (must be 0100h to allocate HMA)
  6014.         DX = EMS handle (memory belonging to EMS handle will be mapped
  6015.             into the address space beginning with the first page
  6016.             allocated to the handle)
  6017.         Return: AH = 00h
  6018.     AH = 0Ch get available memory
  6019.         Return: CF clear
  6020.             BX = 0001h
  6021.             CX = total 4K pages???
  6022.             DX = number of 4K pages free
  6023.     AH = 0Dh CRT controller I/O port trapping
  6024.         AL = mode
  6025.             00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  6026.             01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  6027.             03D4h, and 03D5h
  6028.             02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  6029.         Return: CF clear
  6030.     AH = 0Eh set cursor virtualization callbacks
  6031.         DS:BX -> FAR routine for getting hardware cursor address
  6032.         ES:DX -> FAR routine for setting hardware cursor address
  6033.         Return: CF clear
  6034.         Note:    both callbacks are invoked with CL indicating which
  6035.               CRT controller register to access (0Eh for high
  6036.               byte of cursor address, 0Fh for low byte)
  6037.             the DS:BX callback should return BX=cursor address;
  6038.               ES:DX is called with BL or BH (depending on CL)
  6039.               set to the appropriate half of the cursor's address
  6040.     AH = 0Fh unmap 4K pages
  6041.         CX = first page number
  6042.         DX = number of pages
  6043.         Return: CF clear
  6044.             AL = 00h/01h if ???
  6045.         Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  6046.               simulate a disabled A20
  6047.     AX = 1000h get protected-mode interface
  6048.         DS:SI -> 16-byte buffer for two GDT entries
  6049.         ES:DI -> buffer for 4K page table
  6050.         Return: CF clear
  6051.             EAX = offset of protected-mode API entry point
  6052.             DS:SI buffer filled with two GDT descriptors
  6053.                 first is QEMM code segment, second is data???
  6054.             ES:DI buffer filled with 4K page table
  6055.             DI points to first unused page table entry
  6056.         SeeAlso: INT 67/AX=DE01h
  6057.     AX = 1001h get CPU debug registers
  6058.         ES:DI -> buffer for debug registers (8 DWORDs)
  6059.         Return: CF clear
  6060.             BL = INT01 handling (see function 1002h)
  6061.             ES:DI buffer filled
  6062.     AX = 1002h set CPU debug registers
  6063.         BL = INT01 handling
  6064.             00h     reflect all debugging exceptions as V86-mode INT 01's
  6065.             else convert debugging exceptions other than single-step
  6066.                into V86-mode INT 03's, single-step to INT 01's
  6067.         ES:DI -> buffer containing debug registers (8 DWORDs)
  6068.         Return: CF clear
  6069.         Notes:    identical to INT 67/AX=DE09h if BL=01h
  6070.             the INT01 handling flag is set to 01h by the general-
  6071.               protection violation handler for certain privileged
  6072.               instructions
  6073.     AX = 1003h get machine status word CR0
  6074.         Return: CF clear
  6075.             EAX = contents of CR0
  6076.         SeeAlso: INT 67/AX=DE07h
  6077.     AX = 1004h allocate a 4K page
  6078.         Return: CF clear if successful
  6079.                 EDX = linear address of allocated page
  6080.             CF set on error
  6081.         SeeAlso: INT 67/AX=DE04h
  6082.     AX = 1005h free 4K page
  6083.         EDX = linear address of page to free
  6084.         Return: CF clear
  6085.         SeeAlso: INT 67/AX=DE05h
  6086.     AX = 1006h NOP
  6087.         Return: CF set
  6088.     AX = 1007h get maximum physical memory address
  6089.         Return: CF clear
  6090.             EDX = physical address of highest 4K memory page
  6091.         SeeAlso: INT 67/AX=DE02h
  6092.     AX = 1008h get physical address of page in first megabyte
  6093.         CX = page number (linear address shifted right 12 bits)
  6094.         Return: CF clear
  6095.             EDX = linear address of page
  6096.         SeeAlso: function 1F00h
  6097.     AX = 1009h switch to protected mode
  6098.         ESI = linear address in first megabyte of system reg values
  6099.             (see INT 67/AX=DE0Ch)
  6100.         interrupts disabled
  6101.         Return: interrupts disabled
  6102.             GDTR, IDTR, LDTR, TR loaded
  6103.             SS:ESP must have at least 16 bytes space, and the
  6104.                 entry point is required to set up a new stack
  6105.                 before enabling interrupts
  6106.             EAX, ESI, DS, ES, FS, GS destroyed
  6107.     AX = 100Ah switch back to virtual-86 mode
  6108.         DS = selector for data segment from function 1000h
  6109.         SS:ESP in first megabyte of linear memory
  6110.         interrupts disabled
  6111.         STACK:    QWORD  return address from FAR call to 32-bit segment
  6112.             DWORD  EIP
  6113.             DWORD  CS
  6114.             DWORD  reserved for EFLAGS
  6115.             DWORD  ESP
  6116.             DWORD  SS
  6117.             DWORD  ES
  6118.             DWORD  DS
  6119.             DWORD  FS
  6120.             DWORD  GS
  6121.         will switch to virtual86 mode with interrupts disabled, all
  6122.           segment registers loaded, and EAX destroyed.
  6123.     AH = 11h get memory type map
  6124.         AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  6125.             by QEMM 6.00)
  6126.         ES:DI -> 256-byte buffer for memory types
  6127.         Return: CF clear
  6128.             BL = ???
  6129.             ES:DI buffer filled
  6130.         Note:    each byte of the buffer corresponds to a 4K page, and
  6131.               contains the type of that page: 00h = mappable,
  6132.               02h = mapped ROM, 03h = high RAM, 04h = excluded,
  6133.               05h = video, 06h = ROM, 07h = adapter ROM,
  6134.               08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  6135.               0Bh = conventional, 83h = high RAM under MS Windows
  6136.     AH = 12h get HIRAM chain
  6137.         Return: CF clear
  6138.             BX = segment of first MCB in high memory
  6139.                 0000h if no high memory
  6140.     AX = 1300h VIDRAMEGA???
  6141.         BL = 00h copy ???
  6142.              nonzero copy ??? (reverse)
  6143.         Return: CF clear
  6144.             AL = status
  6145.                 00h if all pages clean
  6146.                 01h if any page dirty
  6147.     AX = 1301h check if pages modified
  6148.         DX:DI = start address of range to check
  6149.         CX = length of range in paragraphs
  6150.         Return: CF clear
  6151.             CX = status
  6152.                 0000h none of the indicated pages is dirty
  6153.                 DI destroyed
  6154.                 1000h one or more pages is dirty
  6155.                 DI = low word of first dirty page's linear addr
  6156.     AX = 1302h ???
  6157.         BL = ???
  6158.         BH = ???
  6159.         CX = ???
  6160.         SI = offset of ???
  6161.         DI = offset of ???
  6162.         ???
  6163.         Return: CF clear
  6164.             ???
  6165.         Note:    disables certain interrupts at the two 8259 PICs during
  6166.               execution; also modifies CRT controller during
  6167.               execution under certain circumstances
  6168.     AX = 1303h initialize EGA graphics virtualization
  6169.         BX = number of pages (less 1) of EMS to allocate
  6170.         Return: CF clear if successful
  6171.                 DX = EMS handle
  6172.             CF set on error
  6173.     AX = 1304h shutdown EGA graphics virtualization
  6174.         DX = EMS handle being used for virtualization
  6175.         Return: CF clear
  6176.     AX = 1305h select portion of EGA graphics to virtualize???
  6177.         (related to graphics virtualization, changes memory mappings)
  6178.         CX = start offset within A000h segment of virtualized mem???
  6179.         Return: CF clear
  6180.         Note:    disables certain interrupts at the two 8259 PICs during
  6181.               execution (see AX=130Ch) and runs inside a QEMM
  6182.               critical section
  6183.     AX = 1306h set DESQview critical section counter address
  6184.         ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  6185.         Return: CF clear
  6186.         Note:    also sets a pointer in the low-memory part of QEMM to
  6187.               the current value of INT 15 if ES:BX not 0000h:0000h
  6188.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  6189.         Return: CF clear
  6190.         Note:    disables certain interrupts at the two 8259 PICs during
  6191.               execution (see AX=130Ch) and runs inside a QEMM
  6192.               critical section
  6193.     AX = 1308h start/reset CRT controller I/O trapping
  6194.         BL = subfunction
  6195.             00h restore CRTC I/O port trapping to previous state
  6196.             else start trapping all accesses to I/O ports 03B0-03DF
  6197.         Return: CF clear
  6198.         Note: if called more than once in a row with BL nonzero, the
  6199.             original state of the I/O port trapping will be lost
  6200.     AX = 1309h Hercules mode-change support
  6201.         ES:BX -> new address for Hercules mode-change callback
  6202.         Return: CF clear
  6203.         Note:    the callback function is called whenever the CRTC mode
  6204.               register is written, with AL set to the value written
  6205.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  6206.         CX:DX -> DAC register virtualization buffer (see below)
  6207.             or 0000h:0000h to disable
  6208.         Return: CF clear
  6209.     AX = 130Bh ???
  6210.         BL = ??? (??? or 00h)
  6211.         Return: CF clear
  6212.             ???
  6213.         Note:    calls AX=130Eh in some cases
  6214.     AX = 130Ch set interrupts to mask
  6215.         BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  6216.             AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  6217.         Return: CF clear
  6218.     AX = 130Dh map EGA memory at A0000h
  6219.         ???
  6220.         Return: CF clear
  6221.         Note:    disables certain interrupts at the two 8259 PICs during
  6222.               execution (see AX=130Ch) and runs inside a QEMM
  6223.               critical section
  6224.             calls AX=1307h
  6225.     AX = 130Eh ??? (modifies CRT controller setup)
  6226.         ???
  6227.         Return: CF clear
  6228.     AX = 130Fh reset ???
  6229.         Return: CF clear
  6230.     AX = 1310h copy modified pages to physical video RAM???
  6231.         ???
  6232.         Return: CF clear
  6233.         Note:    disables certain interrupts at the two 8259 PICs during
  6234.               execution (see AX=130Ch) and runs inside a QEMM
  6235.               critical section
  6236.             also calls AX=130Dh
  6237.     AX = 1311h set ???
  6238.         BL = zero/nonzero???
  6239.         Return: CF clear
  6240.         Note:    certain operations will be performed with interrupts
  6241.               (as set by AX=130Ch) enabled rather than disabled if
  6242.               called with BL nonzero
  6243.     AX = 1312h (v6.02) NOP???
  6244.         Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  6245.     AX = 1400h initialize DESQview "protection level" support
  6246.         ES:DI -> protection level configuration (at least 24 bytes)
  6247.         BL = highest ??? to return (one less than number of words)
  6248.         Return: CF clear
  6249.             AX = ??? (4204h for v6.00)
  6250.         Note:    QEMM also sets the protected mode INT 02 and INT 06
  6251.               vectors to alternate handlers in certain cases
  6252.         Format of protection level configuration:
  6253.         Offset    Size    Description
  6254.          00h    WORD    segment of 128 breakpoint (INT 3) instructions
  6255.                   for use in DESQview protection level 3
  6256.                   interrupt vector checking, or 0000h to
  6257.                   disable; in pl3, INTs 00-7F are pointed at
  6258.                   these breakpoints
  6259.          02h    DWORD    -> array of actual interrupt handler addresses
  6260.                   for INT 00-7F when interrupt vectors are
  6261.                   pointed at protection level 3 breakpoints
  6262.          06h    DWORD    far pointer to ??? region list (see below)
  6263.          0Ah    DWORD    far pointer to buffer for returned ???
  6264.          0Eh    DWORD    seg:ofs of function to call on protection
  6265.                   violation???
  6266.          12h    WORD    segment of ???
  6267.          14h    DWORD    far pointer to DWORD containing number of
  6268.                   paragraphs of ??? for seg at offset 12h
  6269.         Format of Region List:
  6270.         Offset    Size    Description
  6271.          00h    WORD    number of PAIRS of pointers to follow
  6272.          02h  2N DWORDs    start/end seg:ofs addresses of ??? regions
  6273.         Note:    QEMM converts the segmented addresses into linear
  6274.               addresses in place
  6275.     AX = 1401h turn off DESQview protection level support
  6276.         Return: CF clear
  6277.             ???
  6278.         Notes:    clears the DV critical-section flag address set with
  6279.               function 1306h
  6280.             QEMM also sets the protected mode INT 02 and INT 06
  6281.               vectors to the default handlers if they had been
  6282.               revectored by function 1400h
  6283.     AX = 1402h set protection level???
  6284.         BL = protection level???
  6285.             00h NOP
  6286.             01h ???
  6287.             02h ???
  6288.             other (03h) ???
  6289.         ES:DI -> ???
  6290.         Return: CF clear
  6291.             ???
  6292.         Data structure
  6293.         Offset    Size    Description
  6294.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  6295.          02h    WORD    segment of ??? (word at X:0124h set to this)
  6296.          04h    WORD    number of paragraphs of ???
  6297.          06h  3 WORDs    ??? (copied to X:0000h)
  6298.          0Ch    WORD    ???
  6299.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  6300.         ES:DI -> ??? structure added to end of ??? list
  6301.             (at least 31 bytes, DWORD at offset 06h used for
  6302.              storing pointer to next struc, WORD at offset 00h
  6303.              seems to be a key or index)
  6304.         Return: CF clear
  6305.     AX = 1404h NOP
  6306.         Return: CF clear
  6307.     AX = 1405h remove ??? from ??? list
  6308.         BX = key???
  6309.         Return: CF clear
  6310.     AX = 1406h ???
  6311.         ???
  6312.         Return: CF clear
  6313.             ???
  6314.         Notes:    this function is a NOP unless protection level 2 or 3
  6315.               is active
  6316.             when not a NOP, one of the actions is to write-protect
  6317.               certain memory pages
  6318.     AX = 1407h ???
  6319.         ???
  6320.         Return: CF clear
  6321.             ???
  6322.         Note:    same as function 1406h, but only does anything if
  6323.               protection level 2 is active
  6324.     AX = 1408h unprotect???
  6325.         ???
  6326.         Return: CF clear
  6327.             ???
  6328.     AX = 1409h abort program causing protection violation???
  6329.         ???
  6330.         Return: CF clear
  6331.             ???
  6332.     AX = 140Ah set ???
  6333.         BX = index of ???
  6334.         Return: CF clear
  6335.             ???
  6336.         Notes:    no range checking is performed on BX
  6337.             this function is a NOP unless protection level 3 active
  6338.     AX = 140Bh get ???
  6339.         BX = index of ???
  6340.         SI = 0000h
  6341.         Return: CF clear
  6342.             SI = segment of 256-byte buffer??? or 0000h
  6343.         Notes:    no range checking is performed on BX
  6344.             this function is a NOP unless protection level 3 active
  6345.     AH = 15h set timer channel 0 virtualization buffer
  6346.         ES:BX -> WORD buffer for timer channel 0 divisor
  6347.             0000h:0000h to disable virtualization
  6348.         Return: CF clear
  6349.      ---QEMM v5.00+ ---
  6350.     AX = 1600h get memory access status
  6351.         ES:DI -> 256-byte buffer
  6352.         Return: ES:DI buffer filled
  6353.         Note:    each byte of the buffer indicates the status of a 4K
  6354.               page (bit 0 set if read, bit 1 set if written)
  6355.     AX = 1601h set memory access status
  6356.         ES:DI -> 256-byte buffer containing access statuses (see above)
  6357.     AH = 17h get memory usage statistics
  6358.         ES:DI -> 81-byte buffer for memory statistics (see below)
  6359.         Return: CF clear
  6360.      ---QEMM v5.11+ ---
  6361.     AH = 18h check whether conventional memory mapped into address range
  6362.         ES:BX = starting address
  6363.         CX = number of 4K pages
  6364.         Return: CF clear
  6365.             AL = 00h one or more pages is remapped
  6366.                  01h all pages in range are conventional memory
  6367.                 (physical address == virtual address)
  6368.     AH = 19h NOP
  6369.         Return: CF set
  6370.     AH = 1Ah I/O port access
  6371.         AL = subfunction
  6372.             00h get byte from I/O port
  6373.             Return: BL = port value
  6374.             01h send byte to I/O port
  6375.             BL = value to send
  6376.             02h send byte to I/O port, get byte from following port
  6377.             BH = value to send
  6378.             Return: BL = value read
  6379.             03h send bytes to two consecutive I/O ports
  6380.             BH = value for first I/O port (DX)
  6381.             BL = value for second I/O port (DX+1)
  6382.         DX = port number
  6383.         Return: CF clear
  6384.     AH = 1Bh MS Windows 3.x support
  6385.         AL = subfunction
  6386.             00h get EMM Import Structure address
  6387.             ES:DI -> buffer for EMM import data structure
  6388.             Return: CF set on error
  6389.                 CF clear if successful
  6390.             Format of EMM Import structure:
  6391.             Offset    Size    Description
  6392.              00h    DWORD    physical address of EMM import struct
  6393.              04h    BYTE    major version (v6.00 sets to 01h)
  6394.              05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  6395.             SeeAlso: INT 21/AX=4402h/SF=01h
  6396.             01h disable V86 mode
  6397.             Return: CF set on error
  6398.                     (i.e. no Global EMM Import rec. allocated)
  6399.                 CF clear if successful
  6400.             Note:    shuts down EMS and initializes Global EMM
  6401.                   Import record; this function is invoked from
  6402.                   the callback supplied by INT 2F/AX=1605h
  6403.             02h enable V86 mode
  6404.             Return: CF set on error
  6405.                 CF clear if successful
  6406.             Note:    restarts EMS and frees Global EMM Import
  6407.                   record; this function is invoked from the
  6408.                   callback supplied by INT 2F/AX=1605h
  6409.             03h MS Windows initializing
  6410.             CX = segment from which Windows init broadcast made???
  6411.             DX = Windows startup flags
  6412.             DI = Windows version number (major in upper byte)
  6413.             Return: CF clear if successful
  6414.                     DS:SI -> V86 mode enable/disable callback
  6415.                         (see INT 2F/AX=1605h)
  6416.                     ES:BX -> startup info structure
  6417.                         (see INT 2F/AX=1605h)
  6418.                 CF set on error (unable to start Windows)
  6419.             SeeAlso: INT 2F/AX=1605h
  6420.             04h MS Windows terminating
  6421.             Return: CF clear
  6422.             05h determine whether program is driver???
  6423.             DS:DX -> ASCIZ filename
  6424.             Return: CF clear
  6425.                 AL = status
  6426.                     01h if string ends in ".DRV"
  6427.                     FFh if string ends in "GDI.EXE"
  6428.                     00h otherwise
  6429.             06h patch ??? (related to reading Windows drivers)
  6430.             CX = length of data pointed at by DS:DX
  6431.             DS:DX -> buffer containing driver??? code
  6432.             Return: CF clear
  6433.             Note:    patches some specific instructions in the
  6434.                   buffer
  6435.             07h BUG: QEMM 6.00-7.01 accept this and branch randomly
  6436.             else Return: CF set
  6437.     AH = 1Ch hardware interrupt V86-mode calldowns
  6438.         AL = subfunction
  6439.             00h disable IRQ0-7 calldowns
  6440.             01h set V86-mode IRQ0-7 handlers
  6441.             ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6442.             02h disable IRQ8-15 handlers
  6443.             03h set V86-mode IRQ8-15 handlers
  6444.             ES:DI -> 8 DWORDs containing V86-mode handler addresses
  6445.         BUG: although the jump table only contains four entries,
  6446.             QEMM 6.00 will attempt to use it for any value of
  6447.             AL between 00h and 2Ah, thus branching unpredictably
  6448.             for AL=04h-2Ah; QEMM v7.01 behaves similarly for
  6449.             AL=04h-1Bh
  6450.         Note:    when enabled, the appropriate IRQs are reflected back
  6451.               to the specified handlers in virtual-86 mode after
  6452.               the CPU automatically invokes the protected-mode
  6453.               handler inside QEMM
  6454.      ---QEMM v6.00+ ---
  6455.     AH = 1Dh Stealth interrupts
  6456.         AL = subfunction
  6457.             00h switch to pre-Stealth interrupt vector table
  6458.             Note:    also switches VGA Save table pointer
  6459.                   (0040h:00A8h) and overwrites the vectors
  6460.                   currently assigned for use by the two
  6461.                   interrupt controllers (see INT 67/AX=DE0Ah)
  6462.                   with the vectors for INT 08-0F and 70-77 (to
  6463.                   avoid crashing the system).
  6464.             01h restore user interrupt vector table
  6465.             Notes:    interrupts should be disabled around the
  6466.                   AX=1D00h and AX=1D01h calls because QEMM does
  6467.                   not modify the memory maps to map in ROM, so
  6468.                   an interrupt could be disastrous
  6469.                 clears any pending IRQ7 at end of function
  6470.             else
  6471.             Return: CF set
  6472.         Note:    functions 1Dxxh are not supported by QEMM v7.01, and
  6473.               always return CF set
  6474.     AH = 1Eh Stealth information (partially documented)
  6475.         AL = subfunction
  6476.             00h "QEMM_GET_INFO" get Stealth configuration
  6477.             Return: BL = flags (documented as "reserved")
  6478.                     bit 0: conventional memory sorted
  6479.                     bit 1: conventional memory filled
  6480.                     bit 2: ???
  6481.                     bit 3: ???
  6482.                     bit 4: expanded memory is in use
  6483.                     bit 5: ???
  6484.                 BH = reserved (always 00h for v6.00)
  6485.                 CL = stealth type (00h none,46h Frame,4Dh Map)
  6486.                 CH = suspend/resume interrupt (00h none)
  6487.                 DX = reserved (always 0000h for v6.00)
  6488.                 SI = reserved (always 0000h for v6.00)
  6489.                 DI = reserved (always 0000h for v6.00)
  6490.             01h "QEMM_GET_STEALTH_COUNT" get number of Stealth'ed ROMs
  6491.             Return: CF clear
  6492.                 BX = number of Stealth'ed ROMs
  6493.             02h "QEMM_GET_STEALTH_LIST" get Stealth'ed ROM info
  6494.             ES:DI -> buffer for Stealth ROM info (see below)
  6495.             Return: CF clear
  6496.                 BX = number of Stealth'ed ROMs
  6497.                 ES:DI buffer filled
  6498.             else
  6499.             Return: CF set
  6500.     AH = 1Fh page table manipulation (documented)
  6501.         AL = subfunction
  6502.             00h "QEMM_GET_PTE" get page table entry
  6503.             CX = page number
  6504.             Return: EDX = page table entry
  6505.                 CF clear
  6506.             01h "QEMM_SET_PTE" set page table entry
  6507.             CX = page number
  6508.             EDX = new page table entry
  6509.             Return: CF clear
  6510.             SeeAlso: function 1008h
  6511.             else
  6512.             Return: CF set
  6513.     AH = 20h asynchronous disk access support (documented)
  6514.         AL = subfunction
  6515.             00h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  6516.             Return: CF clear
  6517.                 BL = flags
  6518.                     bit 7: VirtualHDIRQ setting respected
  6519.                      (set if Stealth active)
  6520.                     bits 6-1 reserved
  6521.                     bit 0: VirtualHDIRQ currently enabled
  6522.                     (INT 15/AH=90h suppressed when enabled)
  6523.             01h "QEMM_SET_VHI_FINO" set VirtualHDIRQ state
  6524.             BL bit 0 = new VirtualHDIRQ state
  6525.             Return: CF clear
  6526.                 BL = old VHI setting (bits 0 and 7, see above)
  6527.             else
  6528.             Return: CF set
  6529.     AH = 21h Stealth support (documented)
  6530.         AL = subfunction
  6531.             00h "QEMM_COPY_STEALTH_ROMS" copy data from Stealthed addr
  6532.             DS:SI -> start address of hidden memory to copy
  6533.             ES:DI -> buffer for copied data
  6534.             ECX = number of bytes to copy
  6535.             Return: CF clear if successful
  6536.                 CF set on error (DS:SI < C000h:0000h or
  6537.                          DS:SI + ECX > 1M)
  6538.             else
  6539.             Return: CF set
  6540.     ---QEMM v6.03+ ---
  6541.     AH = 22h DESQview/X support
  6542.         AL = subfunction
  6543.             00h get ???
  6544.             Return: CF clear
  6545.                 ES:DI -> ???
  6546.             01h set ???
  6547.             ES:DI -> ??? or 0000h:0000h
  6548.             Return: CF clear if successful
  6549.                 CF set on error
  6550.     ---QEMM v6.04+ ---
  6551.     AH = 23h ???
  6552.         AL = subfunction
  6553.             00h get ???
  6554.             BX = which ??? to get (must be 0000h for v6.04)
  6555.             Return: CF clear if successful
  6556.                     ES:DI -> ???
  6557.                 CF set on error
  6558.             01h set ???
  6559.             BX = which ??? to set (must be 0000h for v6.04)
  6560.             ES:DI -> ???
  6561.             Return: CF clear if successful
  6562.                 CF set on error
  6563.             02h clear specified ???
  6564.             BX = which ??? to clear (must be 0000h for v6.04)
  6565.             Return: CF clear if successful
  6566.                 CF set on error
  6567.             FFh clear all ???
  6568.             else
  6569.             Return: CF set
  6570.     ---QEMM v7.01 only---
  6571.     AH = 24h ST-DBL support
  6572.         AL = subfunction
  6573.             00h set ???
  6574.             EDX -> information table
  6575.                 (EDX = segment SHL 16 + offset)
  6576.             01h ???
  6577.     other
  6578.         Return: CF set
  6579.  
  6580. Format of QEMM 6.0 memory statistics:
  6581. Offset    Size    Description
  6582.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  6583.  01h    DWORD    initial conventional memory in bytes
  6584.  05h    DWORD    initial extended memory in bytes
  6585.  09h    DWORD    initial expanded memory in bytes
  6586.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  6587.  11h    DWORD    Unavailable conventional memory in bytes
  6588.  15h    DWORD    Unavailable extended memory in bytes
  6589.  19h    DWORD    Unavailable expanded memory in bytes
  6590.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  6591.         Add to offset 49h for Total unavailable top/shadow.
  6592.  21h    DWORD    QEMM code size in bytes
  6593.  25h    DWORD    QEMM data size in bytes
  6594.  29h    DWORD    bytes used for TASKS=
  6595.  2Dh    DWORD    DMA buffer size
  6596.  31h    DWORD    bytes used for MAPS=
  6597.  35h    DWORD    bytes of high RAM
  6598.  39h    DWORD    bytes used by mapped ROMs
  6599.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  6600.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  6601.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  6602.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  6603.         Add to offset 1Dh for Total unavailable top/shadow.
  6604.  4Dh    DWORD    conventional memory overhead in bytes
  6605.         (set to 0 by QEMM.COM prior to call)
  6606.  
  6607. Format of Stealth ROM info [array]:
  6608. Offset    Size    Description
  6609.  00h    WORD    starting segment of ROM
  6610.  02h    WORD    length of ROM in paragraphs
  6611.  
  6612. Format of EGA/VGA DAC register virtualization buffer:
  6613. Offset    Size    Description
  6614.  00h    BYTE    (temp) current color register number
  6615.  01h    BYTE    (temp) number of bytes written so far for current color reg
  6616.  02h 768 BYTEs    three bytes per color register
  6617. --------m-6740-------------------------------
  6618. INT 67 - LIM EMS - GET MANAGER STATUS
  6619.     AH = 40h
  6620. Return: AH = status (00h,80h,81h,84h) (see below)
  6621. Note:    this call can be used only after establishing that the EMS driver is in
  6622.       fact present
  6623. SeeAlso: AH=3Fh,AX=FFA5h
  6624.  
  6625. Values for EMS function status:
  6626.  00h    successful
  6627.  80h    internal error
  6628.  81h    hardware malfunction
  6629.  83h    invalid handle
  6630.  84h    undefined function requested by application
  6631.  85h    no more handles available
  6632.  86h    error in save or restore of mapping context
  6633.  87h    insufficient memory pages in system
  6634.  88h    insufficient memory pages available
  6635.  89h    zero pages requested
  6636.  8Ah    invalid logical page number encountered
  6637.  8Bh    invalid physical page number encountered
  6638.  8Ch    page-mapping hardware state save area is full
  6639.  8Dh    save of mapping context failed
  6640.  8Eh    restore of mapping context failed
  6641.  8Fh    undefined subfunction
  6642.  90h    undefined attribute type
  6643.  91h    feature not supported
  6644.  92h    successful, but a portion of the source region has been overwritten
  6645.  93h    length of source or destination region exceeds length of region
  6646.       allocated to either source or destination handle
  6647.  94h    conventional and expanded memory regions overlap
  6648.  95h    offset within logical page exceeds size of logical page
  6649.  96h    region length exceeds 1M
  6650.  97h    source and destination EMS regions have same handle and overlap
  6651.  98h    memory source or destination type undefined
  6652.  9Ah    specified alternate map register or DMA register set not supported
  6653.  9Bh    all alternate map register or DMA register sets currently allocated
  6654.  9Ch    alternate map register or DMA register sets not supported
  6655.  9Dh    undefined or unallocated alternate map register or DMA register set
  6656.  9Eh    dedicated DMA channels not supported
  6657.  9Fh    specified dedicated DMA channel not supported
  6658.  A0h    no such handle name
  6659.  A1h    a handle found had no name, or duplicate handle name
  6660.  A2h    attempted to wrap around 1M conventional address space
  6661.  A3h    source array corrupted
  6662.  A4h    operating system denied access
  6663. --------m-6741-------------------------------
  6664. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  6665.     AH = 41h
  6666. Return: AH = status (see also AH=40h)
  6667.         00h function successful
  6668.         BX = segment of page frame
  6669. SeeAlso: AH=58h,AH=68h
  6670. --------m-6742-------------------------------
  6671. INT 67 - LIM EMS - GET NUMBER OF PAGES
  6672.     AH = 42h
  6673. Return: AH = status (see also AH=40h)
  6674.         00h function successful
  6675.         BX = number of unallocated pages
  6676.         DX = total number of pages
  6677. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  6678.       when this call is made; use AH=46h to ensure that EMM386 is ON
  6679.       before making this call
  6680. SeeAlso: INT 2F/AX=2702h
  6681. --------m-6743-------------------------------
  6682. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  6683.     AH = 43h
  6684.     BX = number of logical pages to allocate
  6685. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see AH=40h)
  6686.     DX = handle if AH=00h
  6687. SeeAlso: AH=45h
  6688. --------m-6744-------------------------------
  6689. INT 67 - LIM EMS - MAP MEMORY
  6690.     AH = 44h
  6691.     AL = physical page number (0-3)
  6692.     BX = logical page number
  6693.         or FFFFh to unmap (QEMM)
  6694.     DX = handle
  6695. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see AH=40h)
  6696. SeeAlso: AH=69h
  6697. --------m-6745-------------------------------
  6698. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  6699.     AH = 45h
  6700.     DX = EMM handle
  6701. Return: AH = status (00h,80h,81h,83h,84h,86h) (see AH=40h)
  6702. SeeAlso: AH=43h
  6703. --------m-6746-------------------------------
  6704. INT 67 - LIM EMS - GET EMM VERSION
  6705.     AH = 46h
  6706. Return: AH = status (00h,80h,81h,84h) (see AH=40h)
  6707.     AL = EMM version number if AH=00h
  6708. --------m-6747-------------------------------
  6709. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  6710.     AH = 47h
  6711.     DX = handle
  6712. Return: AH = status (see below)
  6713. SeeAlso: AH=48h
  6714.  
  6715. Values for status:
  6716.  00h    successful
  6717.  80h    internal error
  6718.  81h    hardware malfunction
  6719.  83h    invalid handle
  6720.  84h    undefined function requested
  6721.  8Ch    page-mapping hardware state save area is full
  6722.  8Dh    save of mapping context failed
  6723.  8Eh    restore of mapping context failed
  6724. --------m-6748-------------------------------
  6725. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  6726.     AH = 48h
  6727.     DX = handle
  6728. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see AH=47h)
  6729. SeeAlso: AH=47h
  6730. --------m-6749-------------------------------
  6731. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  6732.     AH = 49h
  6733. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6734. --------m-674A-------------------------------
  6735. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  6736.     AH = 4Ah
  6737. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  6738. --------m-674B-------------------------------
  6739. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  6740.     AH = 4Bh
  6741. Return: AH = status (see below)
  6742.     BX = number of EMM handles if AH=00h
  6743.  
  6744. Values for status:
  6745.  00h    successful
  6746.  80h    internal error
  6747.  81h    hardware malfunction
  6748.  83h    invalid handle
  6749.  84h    undefined function requested
  6750. --------m-674C-------------------------------
  6751. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  6752.     AH = 4Ch
  6753.     DX = EMM handle
  6754. Return: AH = status (see AH=4Bh)
  6755.     BX = number of logical pages if AH=00h
  6756. SeeAlso: AH=4Dh
  6757. --------m-674D-------------------------------
  6758. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  6759.     AH = 4Dh
  6760.     ES:DI -> array to receive information
  6761. Return: AH = status (00h,80h,81h,84h) (see AH=4Bh)
  6762.     ---if AH=00h---
  6763.     BX = number of active EMM handles
  6764.     array filled with 2-word entries, consisting of a handle and the
  6765.       number of pages allocated to that handle
  6766. SeeAlso: AH=4Ch
  6767. --------m-674E-------------------------------
  6768. INT 67 - LIM EMS - GET OR SET PAGE MAP
  6769.     AH = 4Eh
  6770.     AL = 00h if getting mapping registers
  6771.          01h if setting mapping registers
  6772.          02h if getting and setting mapping registers at once
  6773.          03h if getting size of page-mapping array
  6774.     DS:SI -> array holding information (AL=01h/02h)
  6775.     ES:DI -> array to receive information (AL=00h/02h)
  6776. Return: AH = status
  6777.         00h successful
  6778.         AL = bytes in page-mapping array (AL=03h only)
  6779.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  6780.         80h internal error
  6781.         81h hardware malfunction
  6782.         84h undefined function requested
  6783.         8Fh undefined subfunction parameter
  6784.         A3h contents of source array corrupted (EMS 4.0?)
  6785. Notes:    this function was designed to be used by multitasking operating systems
  6786.       and should not ordinarily be used by appplication software.
  6787.     MD386 returns the size of the page-mapping array in AX instead of AL
  6788. SeeAlso: AH=4Fh
  6789. --------m-674F-------------------------------
  6790. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  6791.     AH = 4Fh
  6792.     AL = subfunction
  6793.         00h get partial page map
  6794.            DS:SI -> structure containing list of segments whose mapping
  6795.             contexts are to be saved
  6796.            ES:DI -> array to receive page map
  6797.         01h set partial page map
  6798.            DS:SI -> structure containing saved partial page map
  6799.         02h get size of partial page map
  6800.            BX = number of mappable segments in the partial map to be saved
  6801. Return: AH = status
  6802.         00h successful
  6803.         80h internal error
  6804.         81h hardware malfunction
  6805.         84h undefined function requested
  6806.         8Bh one of specified segments is not mappable
  6807.         8Fh undefined subfunction parameter
  6808.         A3h contents of partial page map corrupted or count of mappable
  6809.         segments exceeds total number of mappable segments in system
  6810.     AL = size of partial page map for subfunction 02h
  6811. SeeAlso: AH=4Eh
  6812. --------m-6750-------------------------------
  6813. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  6814.     AH = 50h
  6815.     AL = subfunction
  6816.         00h use physical page numbers
  6817.         01h use segment addresses
  6818.     DX = handle
  6819.     CX = number of entries in array
  6820.     DS:SI -> mapping array (see below)
  6821. Return: AH = status
  6822.         00h successful
  6823.         80h internal error
  6824.         81h hardware malfunction
  6825.         83h invalid handle
  6826.         84h undefined function requested
  6827.         8Ah one or more logical pages are invalid
  6828.         8Bh one or more physical pages are invalid
  6829.         8Fh invalid subfunction
  6830. SeeAlso: AH=40h
  6831.  
  6832. Format of mapping array entry:
  6833. Offset    Size    Description
  6834.  00h    WORD    logical page number or FFFFh to unmap physical page
  6835.  02h    WORD    physical page number or segment address
  6836. --------m-6751-------------------------------
  6837. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  6838.     AH = 51h
  6839.     DX = handle
  6840.     BX = number of pages to be allocated to handle
  6841. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see below)
  6842.     BX = actual number of pages allocated to handle
  6843.  
  6844. Values for status:
  6845.  00h    successful
  6846.  80h    internal error
  6847.  81h    hardware malfunction
  6848.  83h    invalid handle
  6849.  84h    undefined function requested
  6850.  87h    more pages requested than present in system
  6851.  88h    more pages requested than currently available
  6852.  8Fh    undefined subfunction
  6853.  90h    undefined attribute type
  6854.  91h    feature not supported
  6855.  A0h    no such handle name
  6856.  A1h    duplicate handle name
  6857. --------m-6752-------------------------------
  6858. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  6859.     AH = 52h
  6860.     AL = subfunction
  6861.         00h get handle attributes
  6862.         Return: AL = attribute
  6863.                 00h handle is volatile
  6864.                 01h handle is nonvolatile
  6865.         01h set handle attributes
  6866.         BL = new attribute (see returned AL)
  6867.         02h get attribute capability
  6868.         Return: AL = attribute capability
  6869.                 00h only volatile handles supported
  6870.                 01h both volatile and non-volatile supported
  6871.     DX = handle
  6872. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see AH=51h)
  6873. SeeAlso: AH=53h
  6874. --------m-6753-------------------------------
  6875. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  6876.     AH = 53h
  6877.     AL = subfunction
  6878.         00h get handle name
  6879.            ES:DI -> 8-byte buffer for handle name
  6880.         01h set handle name
  6881.            DS:SI -> 8-byte handle name
  6882.     DX = handle
  6883. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see AH=51h)
  6884. SeeAlso: AH=52h
  6885. --------m-6754-------------------------------
  6886. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  6887.     AH = 54h
  6888.     AL = subfunction
  6889.         00h get handle directory
  6890.            ES:DI -> buffer for handle directory (see below)
  6891.         01h search for named handle
  6892.            DS:SI -> 8-byte name
  6893.         02h get total number of handles
  6894. Return: AL = number of entries in handle directory (subfunction 00h)
  6895.     DX = value of named handle (subfunction 01h)
  6896.     BX = total number of handles (subfunction 02h)
  6897.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also AH=51h)
  6898.         A1h a handle found had no name
  6899.  
  6900. Format of handle directory entry:
  6901. Offset    Size    Description
  6902.  00h    WORD    handle
  6903.  02h  8 BYTEs    handle's name
  6904. --------m-6755-------------------------------
  6905. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  6906.     AH = 55h
  6907.     AL = subfunction
  6908.         00h physical page numbers provided by caller
  6909.         01h segment addresses provided by caller
  6910.     DX = handle
  6911.     DS:SI -> structure containing map and jump address
  6912. Return: (at target address unless error)
  6913.     AH = status (see below)
  6914. SeeAlso: AH=56h
  6915.  
  6916. Values for status:
  6917.  00h    successful
  6918.  80h    internal error
  6919.  81h    hardware failure
  6920.  83h    invalid handle
  6921.  84h    undefined function requested
  6922.  8Ah    invalid logical page number encountered
  6923.  8Bh    invalid physical page number encountered
  6924.  8Fh    invalid subfunction
  6925. --------m-6756-------------------------------
  6926. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  6927.     AH = 56h
  6928.     AL = subfunction
  6929.         00h physical page numbers provided by caller
  6930.         DX = handle
  6931.         DS:SI -> structure containing page map and call address
  6932.         01h segment addresses provided by caller
  6933.         DX = handle
  6934.         DS:SI -> structure containing page map and call address
  6935.         02h get page map stack space required
  6936.         Return: BX = stack space required
  6937. Return: (if successful, the target address is called.  Use a RETF to return and
  6938.      restore mapping context)
  6939.     AH = status (see AH=55h)
  6940. SeeAlso: AH=55h
  6941. --------m-6756FF-----------------------------
  6942. INT 67 - RM386 v6.00 - ???
  6943.     AX = 56FFh
  6944.     DS:SI -> ???
  6945.     ???
  6946. Return: ???
  6947. --------m-6757-------------------------------
  6948. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  6949.     AH = 57h
  6950.     AL = subfunction
  6951.         00h move memory region
  6952.         01h exchange memory region
  6953.     DS:SI -> structure describing source and destination (see below)
  6954. Return: AH = status (see below)
  6955. Note:    source and destination may overlap for a move, in which case the copy
  6956.       direction is chosen such that the destination receives an intact copy
  6957.       of the source region
  6958.  
  6959. Values for status:
  6960.  00h    successful
  6961.  80h    internal error
  6962.  81h    hardware failure
  6963.  83h    invalid handle
  6964.  84h    undefined function requested
  6965.  8Ah    invalid logical page number encountered
  6966.  8Fh    undefined subfunction
  6967.  92h    successful, but a portion of the source region has been overwritten
  6968.  93h    length of source or destination region exceeds length of region
  6969.       allocated to either source or destination handle
  6970.  94h    conventional and expanded memory regions overlap
  6971.  95h    offset within logical page exceeds size of logical page
  6972.  96h    region length exceeds 1M
  6973.  97h    source and destination EMS regions have same handle and overlap
  6974.  98h    memory source or destination type undefined
  6975.  A2h    attempted to wrap around 1M conventional address space
  6976.  
  6977. Format of EMS copy data:
  6978. Offset    Size    Description
  6979.  00h    DWORD    region length in bytes
  6980.  04h    BYTE    source memory type
  6981.         00h conventional
  6982.         01h expanded
  6983.  05h    WORD    source handle (0000h if conventional memory)
  6984.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  6985.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  6986.  0Bh    BYTE    destination memory type
  6987.         00h conventional
  6988.         01h expanded
  6989.  0Ch    WORD    destination handle
  6990.  0Eh    WORD    destination initial offset
  6991.  10h    WORD    destination initial segment or page
  6992. --------m-6758-------------------------------
  6993. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  6994.     AH = 58h
  6995.     AL = subfunction
  6996.         00h get mappable physical address array
  6997.         ES:DI -> buffer to be filled with array
  6998.         01h get number of entries in m.p.a. array
  6999. Return: CX = number of entries in array
  7000.     AH = status (00h,80h,81h,84h,8Fh) (see AH=57h)
  7001. Note:    the returned array for subfunction 00h is filled in physical segment
  7002.       address order
  7003.  
  7004. Format of mappable physical address entry:
  7005. Offset    Size    Description
  7006.  00h    WORD    physical page segment
  7007.  02h    WORD    physical page number
  7008. --------m-675857-----------------------------
  7009. INT 67 U - NETROOM??? - ???
  7010.     AX = 5857h
  7011.     BX = function??? (0057h,0059h,0159h seen)
  7012.     ???
  7013. Return: ???
  7014. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  7015.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  7016.       AX=580xh or AX=5857h/BX=0x59h should be used
  7017. SeeAlso: AX=5BF0h
  7018. --------m-6759-------------------------------
  7019. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  7020.     AH = 59h
  7021.     AL = subfunction
  7022.         00h get hardware configuration array
  7023.         ES:DI -> buffer to be filled with array (see below)
  7024.         01h get unallocated raw page count
  7025.         Return: BX = unallocated raw pages
  7026.             DX = total raw pages
  7027. Return: AH = status (see also AH=58h"EMS 4.0")
  7028.         A4h access denied by operating system
  7029. Note:    subfunction 00h is for use by operating systems only, and can be
  7030.       enabled or disabled at any time by the operating system
  7031.  
  7032. Format of hardware configuration array:
  7033. Offset    Size    Description
  7034.  00h    WORD    size of raw EMM pages in paragraphs
  7035.  02h    WORD    number of alternate register sets
  7036.  04h    WORD    size of mapping-context save area in bytes
  7037.  06h    WORD    number of register sets assignable to DMA
  7038.  08h    WORD    DMA operation type
  7039.         0000h DMA with alternate register sets
  7040.         0001h only one DMA register set
  7041. --------m-675A-------------------------------
  7042. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  7043.     AH = 5Ah
  7044.     AL = subfunction
  7045.         00h allocate standard pages
  7046.         01h allocate raw pages
  7047.     BX = number of pages to allocate
  7048. Return: DX = handle
  7049.     AH = status
  7050.         00h successful
  7051.         80h internal error
  7052.         81h hardware failure
  7053.         84h undefined function requested
  7054.         85h no more handles available
  7055.         87h insufficient memory pages in system
  7056.         88h insufficient memory pages available
  7057.         8Fh undefined subfunction
  7058. --------m-675B-------------------------------
  7059. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  7060.     AH = 5Bh
  7061.     AL = subfunction
  7062.         00h get alternate map register set
  7063.         Return: BL = current active alternate map register set number
  7064.             ES:DI -> map register context save area if BL=00h
  7065.         01h set alternate map register set
  7066.         BL = new alternate map register set number
  7067.         ES:DI -> map register context save area if BL=0
  7068.         02h get alternate map save array size
  7069.         Return: DX = array size in bytes
  7070.         03h allocate alternate map register set
  7071.         Return: BL = number of map register set; 00h = not supported
  7072.         04h deallocate alternate map register set
  7073.         BL = number of alternate map register set
  7074. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see below)
  7075. Note:    this function is for use by operating systems only, and can be
  7076.       enabled or disabled at any time by the operating system
  7077.  
  7078. Values for status:
  7079.  00h    successful
  7080.  80h    internal error
  7081.  81h    hardware malfunction
  7082.  84h    undefined function requested
  7083.  8Fh    undefined subfunction
  7084.  9Ah    specified alternate map register or DMA register set not supported
  7085.  9Bh    all alternate map register or DMA register sets currently allocated
  7086.  9Ch    alternate map register or DMA register sets not supported
  7087.  9Dh    undefined or unallocated alternate map register/DMA register set
  7088.  9Eh    dedicated DMA channels not supported
  7089.  9Fh    specified dedicated DMA channel not supported
  7090.  A3h    source array corrupted
  7091.  A4h    operating system denied access
  7092. --------m-675B-------------------------------
  7093. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  7094.     AH = 5Bh
  7095.     AL = subfunction
  7096.         05h allocate DMA register set
  7097.         Return: BL = DMA register set number, 00h if not supported
  7098.         06h enable DMA on alternate map register set
  7099.            BL = DMA register set number
  7100.            DL = DMA channel number
  7101.         07h disable DMA on alternate map register set
  7102.            BL = DMA register set number
  7103.         08h deallocate DMA register set
  7104.            BL = DMA register set number
  7105. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see AH=5Ah)
  7106. Note:    this function is for use by operating systems only, and can be
  7107.       enabled or disabled at any time by the operating system
  7108. --------m-675BE0-----------------------------
  7109. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  7110.     AX = 5BE0h
  7111.     ES:BX -> memory for which to get linear address
  7112. Return: AH = 00h
  7113.     CX:DX = linear address of physical memory corresponding to ES:BX
  7114. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  7115.       MICEMM is a memory manager for some Micronics motherboards
  7116. Note:    this has been superceded by AX=DE06h, which should be used instead
  7117. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  7118. --------m-675BE1-----------------------------
  7119. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  7120.     AX = 5BE1h
  7121. Return: AH = 00h
  7122.     CX = code and data size in bytes
  7123.     DX:BX = physical address of RM386 code
  7124.     DI:SI = total size of RM386 area including handle tables
  7125.     BP = number of additional pages (high DOS, etc.)
  7126. SeeAlso: AX=5BE0h,AX=5BE2h
  7127. --------m-675BE2-----------------------------
  7128. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  7129.     AX = 5BE2h
  7130. Return: DS:SI -> V86-mode table (see below)
  7131.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  7132. SeeAlso: AX=5BE0h,AX=5BE1h
  7133.  
  7134. Format of V86-mode table:
  7135. Offset    Size    Description
  7136.  00h    DWORD    original INT 13 vector
  7137.  04h    DWORD    original INT 15 vector
  7138.  08h    DWORD    original INT 19 vector
  7139.  0Ch    DWORD    original INT 21 vector
  7140.  10h    DWORD    original INT 4B vector
  7141.  14h    DWORD    original INT 67 vector
  7142. --------m-675BF0-----------------------------
  7143. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  7144.     AX = 5BF0h
  7145. Return: AH = 00h if MICEMM or RM386 present
  7146.         BX = code segment of driver
  7147. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  7148.       manager included in Helix Software's Netroom
  7149. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  7150. --------m-675BF1-----------------------------
  7151. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  7152.     AX = 5BF1h
  7153.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  7154. Return: AH = 00h
  7155.     ES:BX buffer filled
  7156. Note:    each byte in the buffer specifies the type of a 4K page of memory
  7157. SeeAlso: AX=5BE0h,AX=5BF0h
  7158.  
  7159. Values for memory type:
  7160.  00h    unused (MICEMM), RAM/available (RM386)
  7161.  02h    DOS extension (XMS UMB)
  7162.  04h    shadowed ROM
  7163.  08h    mappable EMS
  7164.  10h    page frame
  7165.  20h    ROM
  7166.  40h    reserved (video memory, etc)
  7167.  80h    RAM (MICEMM), Windows UMB (RM386)
  7168. --------m-675BF2-----------------------------
  7169. INT 67 - RM386 - GET RM386 INTERNAL DATA
  7170.     AX = 5BF2h
  7171.     CX = size of buffer
  7172.     DS:SI -> buffer for internal data
  7173.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  7174. Return: buffer filled
  7175. Note:    the data returned by this function is release-specific
  7176. SeeAlso: AX=5BF0h
  7177. --------m-675BF3-----------------------------
  7178. INT 67 - RM386 - RETURN TO REAL MODE
  7179.     AX = 5BF3h
  7180. Return: nothing
  7181. Note:    use AX=5DE0h instead of this functin
  7182. SeeAlso: AX=5BF0h,AX=5DE0h
  7183. --------m-675BF4-----------------------------
  7184. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  7185.     AX = 5BF4h
  7186. Return: AH = 00h
  7187.     BX = global flags 1 (see below)
  7188.     CX = global flags 2 (see below)
  7189.     DX = global flags 3 (see below)
  7190.     SI = global flags 4 (see below)
  7191. SeeAlso: AX=5BF0h
  7192.  
  7193. Bitfields for global flags 1:
  7194. Bit(s)    Description
  7195.  0-3    reserved
  7196.  4    V86 mode
  7197.  5    reserved
  7198.  6    80386 or higher CPU
  7199.  7,8    reserved
  7200.  9    A20 enabled at startup
  7201.  10    "HIGH_IO"
  7202.  11    ROM
  7203.  12    large frame
  7204.  13,14    reserved
  7205.  15    PS/2-style A20 control
  7206.  
  7207. Bitfields for global flags 2:
  7208. Bit(s)    Description
  7209.  0    HMA in use
  7210.  1    XMS present
  7211.  2    using XMS driver memory
  7212.  3    HIGH (NEAT only)
  7213.  4-7    reserved
  7214.  8    NOBKTRAP
  7215.  9    NORESET
  7216.  10    ALTMAP
  7217.  11    NOFRAME
  7218.  12-15    reserved
  7219.  
  7220. Bitfields for global flags 3:
  7221. Bit(s)    Description
  7222.  0    NOTEST
  7223.  1    NOEBDA
  7224.  2    Windows3 support
  7225.  3    system board mouse
  7226.  4    DISKBUF
  7227.  5    EBDALOW
  7228.  6    A20 global enable flag
  7229.  7    A20 flag
  7230.  8    EBDA moved to stub
  7231.  9    VXD file was found
  7232.  10    reserved
  7233.  11    NOBOOTMAP
  7234.  12    AUTO
  7235.  13    PS/2 machine
  7236.  14    Compaq ROM merge active
  7237.  15    NOHMA set
  7238.  
  7239. Bitfields for global flags 4:
  7240. Bit(s)    Description
  7241.  0    "NOV8259" don't virtualize interrupt controller
  7242.  1    NOSCSI
  7243.  2    NOSCAN
  7244.  3    NOTR
  7245.  4    ALTBOOT
  7246.  5    NOCOMPQ
  7247.  6    KB2TRAP
  7248.  7    DESHADOW
  7249.  8    Video 7 VGA detected
  7250.  9    reserved
  7251.  10    NOVGA
  7252.  11    NOPS2
  7253.  12    DEBUG
  7254.  13    NOVKB
  7255.  14,15    reserved
  7256. --------m-675BF5-----------------------------
  7257. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  7258.     AX = 5BF5h
  7259. Return: AH = status
  7260.         00h successful
  7261.         BX = current number of allocated EMS handles
  7262.         84h function not available
  7263. SeeAlso: AX=5BF0h
  7264. --------m-675C-------------------------------
  7265. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  7266.     AH = 5Ch
  7267. Return: AH = status (see below)
  7268.  
  7269. Values for status:
  7270.  00h    successful
  7271.  80h    internal error
  7272.  81h    hardware malfunction
  7273.  84h    undefined function requested
  7274. --------m-675D-------------------------------
  7275. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  7276.     AH = 5Dh
  7277.     AL = subfunction
  7278.         00h enable OS Function Set
  7279.         01h disable OS Function Set
  7280.         02h return access key (resets memory manager, returns access key at
  7281.         next invocation)
  7282.     BX,CX = access key returned by first invocation
  7283. Return: BX,CX = access key, returned only on first invocation of function
  7284.     AH = status (see also AH=5Ch)
  7285.         8Fh undefined subfunction
  7286.         A4h operating system denied access
  7287. --------m-675D03-----------------------------
  7288. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  7289.     AX = 5D03h
  7290.     ???
  7291. Return: ???
  7292. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  7293.       for use with the MultiDOS Plus multitasker
  7294. SeeAlso: AX=5D04h,AX=5E00h
  7295. --------m-675D04-----------------------------
  7296. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  7297.     AX = 5D04h
  7298.     BX = alternate register set number
  7299.     ES:DI -> 1024-byte buffer for map structure
  7300. Return: AH = status (see AH=40h)
  7301.     buffer filled if AH=00h
  7302. Note:    used for debugging purposes
  7303. SeeAlso: AX=5D05h
  7304. --------m-675D05-----------------------------
  7305. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  7306.     AX = 5D05h
  7307.     BX = handle number
  7308.     ES:DI -> 1024-byte buffer for handle table
  7309. Return: AH = status (see AH=40h)
  7310.     buffer filled if AH=00h
  7311. Note:    used for debugging purposes
  7312. SeeAlso: AX=5D04h
  7313. --------m-675DE0-----------------------------
  7314. INT 67 - RM386 - DISABLE RM386
  7315.     AX = 5DE0h
  7316. Note:    RM386 traps this functions on the initial transition to protected
  7317.       mode caused by the INT instruction, which means it can not be
  7318.       overridden simply by hooking the interrupt
  7319. SeeAlso: AX=5DE1h
  7320. --------m-675DE1-----------------------------
  7321. INT 67 - RM386 - ENABLE RM386
  7322.     AX = 5DE1h
  7323. Note:    RM386 traps this functions on the initial transition to protected
  7324.       mode caused by the INT instruction, which means it can not be
  7325.       overridden simply by hooking the interrupt
  7326. SeeAlso: AX=5DE0h
  7327. --------m-675DE2-----------------------------
  7328. INT 67 - RM386 - GET PAGE TABLE
  7329.     AX = 5DE2h
  7330.     ES:DI -> 1088-byte buffer for page table
  7331. Return: ES:DI buffer filled
  7332. Note:    RM386 traps this functions on the initial transition to protected
  7333.       mode caused by the INT instruction, which means it can not be
  7334.       overridden simply by hooking the interrupt
  7335. SeeAlso: AX=5DE3h
  7336. --------m-675DE3-----------------------------
  7337. INT 67 - RM386 - SET PAGE TABLE
  7338.     AX = 5DE3h
  7339.     ES:DI -> 1088-byte buffer containing page table
  7340. Notes:    only the access bits of the page table are used, the remainder is
  7341.       ignored
  7342.     RM386 traps this functions on the initial transition to protected
  7343.       mode caused by the INT instruction, which means it can not be
  7344.       overridden simply by hooking the interrupt
  7345. SeeAlso: AX=5DE2h
  7346. --------m-675DE4-----------------------------
  7347. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  7348.     AX = 5DE4h
  7349.     BL = page number
  7350.     BH = access (00h read-only, 01h read-write)
  7351. Note:    RM386 traps this functions on the initial transition to protected
  7352.       mode caused by the INT instruction, which means it can not be
  7353.       overridden simply by hooking the interrupt
  7354. --------m-675DE5-----------------------------
  7355. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  7356.     AX = 5DE5h
  7357.     EBX = physical page number
  7358.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  7359. Return: AH = status
  7360.         00h successful
  7361.         8Bh invalid destination page (not in first megabyte)
  7362. Note:    RM386 traps this functions on the initial transition to protected
  7363.       mode caused by the INT instruction, which means it can not be
  7364.       overridden simply by hooking the interrupt
  7365. SeeAlso: AX=5DE6h
  7366. --------m-675DE6-----------------------------
  7367. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  7368.     AX = 5DE6h
  7369.     BX = logical page number in 4K pages from beginning of memory for EMS
  7370.         handle
  7371.     CX = segment in first megabyte to be remapped
  7372.     DX = previously-allocated EMS handle
  7373. Return: AH = status
  7374.         00h successful
  7375.         83h invalid handle
  7376.         8Ah invalid logical page (out of handle's range)
  7377.         8Bh invalid destination page (not in first megabyte)
  7378. Note:    RM386 traps this functions on the initial transition to protected
  7379.       mode caused by the INT instruction, which means it can not be
  7380.       overridden simply by hooking the interrupt
  7381. SeeAlso: AX=5DE5h
  7382. --------m-675DE7-----------------------------
  7383. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  7384.     AX = 5DE7h
  7385.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  7386.     CX = number of pages to set
  7387.     DX = first page number to set (in first megabyte)
  7388. Return: AH = status
  7389.         00h successful
  7390.         8Bh invalid destination page (not in first megabyte)
  7391.         A5h invalid page bits
  7392.         A6h invalid page count (overflows first megabyte)
  7393. Note:    RM386 traps this functions on the initial transition to protected
  7394.       mode caused by the INT instruction, which means it can not be
  7395.       overridden simply by hooking the interrupt
  7396. --------m-675DE8-----------------------------
  7397. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  7398.     AX = 5DE8h
  7399.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7400.     CX = number of page table entries to get
  7401.     ES:DI -> buffer for DWORD page table entries
  7402. Return: AH = status (00h successful, 8Bh invalid page)
  7403. Note:    RM386 traps this functions on the initial transition to protected
  7404.       mode caused by the INT instruction, which means it can not be
  7405.       overridden simply by hooking the interrupt
  7406. SeeAlso: AX=5DE9h
  7407. --------m-675DE9-----------------------------
  7408. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  7409.     AX = 5DE9h
  7410.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  7411.     CX = number of page table entries to get
  7412.     DS:SI -> buffer of DWORD page table entries
  7413. Return: AH = status (00h successful, 8Bh invalid destination page)
  7414. Note:    RM386 traps this functions on the initial transition to protected
  7415.       mode caused by the INT instruction, which means it can not be
  7416.       overridden simply by hooking the interrupt
  7417. SeeAlso: AX=5DE8h
  7418. --------m-675DEA-----------------------------
  7419. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  7420.     AX = 5DEAh
  7421.     BX = function
  7422.         00h globally disable V86-mode trapping
  7423.         01h globally enable V86-mode trapping
  7424.         CL = interrupt to use for trapping
  7425.         02h get I/O trapping state
  7426. Return: AH = status
  7427.         00h successful
  7428.         BX = current trapping state (function 02h)
  7429.             0000h disabled, 0001h enabled
  7430.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  7431. Notes:    RM386 traps this functions on the initial transition to protected
  7432.       mode caused by the INT instruction, which means it can not be
  7433.       overridden simply by hooking the interrupt
  7434.     when I/O trapping is enabled and I/O port access occurs, RM386
  7435.       simulates an INT instruction for the specified interrupt; the
  7436.       interrupt handler is responsible for decoding the trapped instruction
  7437.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  7438.       similar but more-easily used interface.
  7439. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  7440. --------m-675DEB-----------------------------
  7441. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  7442.     AX = 5DEBh
  7443.     BX = function
  7444.         00h disable V86-mode trapping for specified port
  7445.         01h enable V86-mode trapping for specified port
  7446.         02h get V86-mode trapping state for specified port
  7447.     DX = port for which to enable/disable/query trapping
  7448. Return: AH = status
  7449.         00h successful
  7450.         BX = current trapping state (00h off, 01h on) (function 02)
  7451.         A7h invalid port ID
  7452.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  7453. Notes:    RM386 traps this functions on the initial transition to protected
  7454.       mode caused by the INT instruction, which means it can not be
  7455.       overridden simply by hooking the interrupt
  7456. SeeAlso: AX=5DEAh
  7457. --------m-675DFD-----------------------------
  7458. INT 67 U - RM386 v6.00 - ???
  7459.     AX = 5DFDh
  7460.     ???
  7461. Return: ???
  7462. Note:    RM386 traps this function on the initial transition to protected
  7463.       mode caused by the INT instruction, which means it can not be
  7464.       overridden simply by hooking the interrupt
  7465. SeeAlso: AX=5DFEh
  7466. --------m-675DFE-----------------------------
  7467. INT 67 U - RM386 v6.00 - ???
  7468.     AX = 5DFEh
  7469.     ???
  7470. Return: ???
  7471. Note:    RM386 traps this function on the initial transition to protected
  7472.       mode caused by the INT instruction, which means it can not be
  7473.       overridden simply by hooking the interrupt
  7474. SeeAlso: AX=5DFDh
  7475. --------m-675DFF-----------------------------
  7476. INT 67 U - RM386 v6.00 - ???
  7477.     AX = 5DFFh
  7478.     ???
  7479. Return: ???
  7480. Note:    RM386 traps this function on the initial transition to protected
  7481.       mode caused by the INT instruction, which means it can not be
  7482.       overridden simply by hooking the interrupt
  7483. SeeAlso: AX=5DFDh,AX=5DFEh
  7484. --------m-675E00-----------------------------
  7485. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  7486.     AX = 5E00h
  7487.     DH = breakpoint number (0-3)
  7488.     DL = breakpoint attributes (used to set DR7)
  7489.     CX:BX = linear address of breakpoint
  7490. SeeAlso: AX=5D03h,AX=5E01h
  7491. --------m-675E01-----------------------------
  7492. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  7493.     AX = 5E01h
  7494.     BL = register number (0-3,7)
  7495. Return: CX:BX = value of specified DRx register
  7496. SeeAlso: AX=5E00h
  7497. --------m-675E02-----------------------------
  7498. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  7499.     AX = 5E02h
  7500.     CX:BX -> exception handler
  7501. Note:    the specified exception handler is called with a simulated interrupt
  7502.       whenever a debug exception occurs which was caused by a hardware
  7503.       breakpoint set with the debug registers
  7504. SeeAlso: AX=5E04h,AX=5E05h
  7505. --------m-675E03-----------------------------
  7506. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  7507.     AX = 5E03h
  7508.     BL = register map set number
  7509.     BH = new state (00h read-only, else read-write)
  7510.     CX = linear page number (linear address SHR 12)
  7511. Note:    setting write protection in map set 0 will cause the setting to become
  7512.       the default for newly-allocated map sets
  7513. --------m-675E04-----------------------------
  7514. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  7515.     AX = 5E04h
  7516. Return: BL = debug exception (low byte of DR6 register)
  7517. SeeAlso: AX=5E02h,AX=5E05h
  7518. --------m-675E05-----------------------------
  7519. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  7520.     AX = 5E05h
  7521. Note:    may be required when using AX=5E02h for handling instruction
  7522.       breakpoints
  7523. SeeAlso: AX=5E02h,AX=5E04h
  7524. --------m-6760-------------------------------
  7525. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  7526.     AH = 60h
  7527.     ES:DI -> buffer
  7528. Return: AH = status (see also AH=40h)
  7529.     AL = number of entries
  7530.     buffer at ES:DI filled
  7531. --------m-6761-------------------------------
  7532. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  7533.     AH = 61h
  7534.     ???
  7535. Return: ???
  7536. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  7537.       ensuring that the cache accurately reflects what the processor would
  7538.       see without the cache.
  7539. --------m-6768-------------------------------
  7540. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  7541.     AH = 68h
  7542.     ES:DI -> buffer
  7543. Return: AH = status (see also AH=40h)
  7544.     AL = number of entries
  7545.     buffer at ES:DI filled
  7546. Note:    equivalent to LIM 4.0 function 58h
  7547. --------m-6769-------------------------------
  7548. INT 67 - EEMS - MAP PAGE INTO FRAME
  7549.     AH = 69h
  7550.     AL = frame number
  7551.     BX = page number
  7552.     DX = handle
  7553. Return: AH = status (see also AH=40h)
  7554. Note:    similar to EMS function 44h
  7555. SeeAlso: AH=44h,AH=50h,AH=6Ah
  7556. --------m-676A-------------------------------
  7557. INT 67 - EEMS - PAGE MAPPING
  7558.     AH = 6Ah
  7559.     AL = subfunction
  7560.         00h save partial page map
  7561.         CH = first page frame
  7562.         CL = number of frames
  7563.         ES:DI -> buffer which is to be filled
  7564.         01h restore partial page map
  7565.         CH = first page frame
  7566.         CL = number of frames
  7567.         DI:SI -> previously saved page map
  7568.         02h save and restore partial page map
  7569.         CH = first page frame
  7570.         CL = number of frames
  7571.         ES:DI = buffer for current page map
  7572.         DI:SI = new page map
  7573.         03h get size of save array
  7574.         CH = first page frame
  7575.         CL = number of frames
  7576.         Return: AL = size of array in bytes
  7577.         04h switch to standard map register setting
  7578.         05h switch to alternate map register setting
  7579.         06h deallocate pages mapped to frames in conventional memory
  7580.         CH = first page frame
  7581.         CL = number of frames
  7582. Return: AH = status (see also AH=40h)
  7583. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  7584.       specified
  7585. SeeAlso: AH=69h
  7586. --------m-676B-------------------------------
  7587. INT 67 - DESQview 2.42-2.53 - BUG
  7588.     AH = 6Bh
  7589. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  7590.       function due to a fencepost error
  7591. --------m-67DD-------------------------------
  7592. INT 67 - Quadtel QMAPS - API
  7593.     AH = DDh
  7594.     AL = function
  7595.     ???
  7596. Return: ???
  7597. Notes:    details are not yet available
  7598.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  7599.       supports this API
  7600. SeeAlso: AH=3Fh,AX=FFA5h
  7601. --------E-67DE00-----------------------------
  7602. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  7603.     AX = DE00h
  7604. Return: AH = 00h    VCPI is present
  7605.         BH = major version number
  7606.         BL = minor version number
  7607.     AH nonzero  VCPI not present
  7608. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  7609. SeeAlso: INT 2F/AX=1687h
  7610. --------E-67DE01-----------------------------
  7611. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  7612.     AX = DE01h
  7613.     ES:DI -> 4K page table buffer
  7614.     DS:SI -> three descriptor table entries in GDT
  7615.         first becomes code segment descriptor, other two for use by
  7616.         main control program
  7617. Return: AH = 00h successful
  7618.         DI -> first unused page table entry in buffer
  7619.         EBX -> protected mode entry point in code segment
  7620.     AH = nonzero  failed
  7621. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  7622.       AX=DE0Ch (in each case, all other registers as appropriate for
  7623.       the function)
  7624. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  7625.  
  7626. QEMM v6.03 protected mode entry point may also be called with:
  7627.     AX = DF00h ???
  7628.         ???
  7629.         Return: ???
  7630.     AX = DF01h ???
  7631.         ???
  7632.         Return: ???
  7633. --------E-67DE02-----------------------------
  7634. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  7635.     AX = DE02h
  7636. Return: AH = 00h  successful
  7637.         EDX = physical address of highest 4K memory page
  7638.     AH nonzero: failed
  7639. SeeAlso: AH=3Fh
  7640. --------E-67DE03-----------------------------
  7641. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  7642.     AX = DE03h
  7643. Return: AH = 00h  successful
  7644.         EDX = number of free 4K pages
  7645.     AH nonzero: failed
  7646. Notes:    returns total number of pages available to ALL tasks in system
  7647.     also available in protected mode by calling the protected-mode VCPI
  7648.       entry point
  7649. SeeAlso: AX=DE04h
  7650. --------E-67DE04-----------------------------
  7651. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  7652.     AX = DE04h
  7653. Return: AH = 00h successful
  7654.         EDX = physical address of allocated page
  7655.     AH nonzero: failed
  7656. Notes:    the client program is responsible for freeing all memory allocated
  7657.       with this call before terminating
  7658.     also available in protected mode by calling the protected-mode VCPI
  7659.       entry point
  7660. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  7661. --------E-67DE05-----------------------------
  7662. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  7663.     AX = DE05h
  7664.     EDX = physical address of 4K page
  7665. Return: AH = 00h successful
  7666.     AH nonzero: failed
  7667. Note:    also available in protected mode by calling the protected-mode VCPI
  7668.       entry point
  7669. SeeAlso: AH=3Fh,AX=DE04h
  7670. --------E-67DE06-----------------------------
  7671. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  7672.     AX = DE06h
  7673.     CX = page number (linear address shifted right 12 bits)
  7674. Return: AH = 00h successful
  7675.         EDX = physical address of page
  7676.     AH nonzero: invalid page number (AH = 8Bh recommended)
  7677. SeeAlso: AX=5BE0h
  7678. --------E-67DE07-----------------------------
  7679. INT 67 - Virtual Control Program Interface - READ CR0
  7680.     AX = DE07h
  7681. Return: AH = 00h
  7682.     EBX = value of Control Register 0
  7683. SeeAlso: AH=3Fh,AX=DE07h
  7684. --------E-67DE08-----------------------------
  7685. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  7686.     AX = DE08h
  7687.     ES:DI -> array of 8 DWORDs
  7688. Return: AH = 00h
  7689.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  7690. SeeAlso: AH=3Fh,AX=DE09h
  7691. --------E-67DE09-----------------------------
  7692. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  7693.     AX = DE09h
  7694.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  7695. Return: AH = 00h
  7696. Note:    values for DR4 and DR5 ignored
  7697. SeeAlso: AH=3Fh,AX=DE08h
  7698. --------E-67DE0A-----------------------------
  7699. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  7700.     AX = DE0Ah
  7701. Return: AH = 00h successful
  7702.         BX = first vector used by master 8259 (IRQ0)
  7703.         CX = first vector used by slave 8259 (IRQ8)
  7704.     AH nonzero: failed
  7705. Note:    CX is undefined in systems without a slave 8259
  7706. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  7707. --------E-67DE0B-----------------------------
  7708. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  7709.     AX = DE0Bh
  7710.     BX = first vector used by master 8259
  7711.     CX = first vector used by slave 8259
  7712.     interrupts disabled
  7713. Return: AH = 00h successful
  7714.     AH nonzero: failed
  7715. Notes:    This call merely informs the server that the client has changed the
  7716.       interrupt mappings.  The client may not change the mappings if they
  7717.       have already been changed by the server or another client, and is
  7718.       responsible for restoring the original mappings before terminating.
  7719. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  7720. --------E-67DE0C-----------------------------
  7721. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  7722.     AX = DE0Ch
  7723.     ESI = linear address in first megabyte of values for system registers
  7724.     interrupts disabled
  7725. Return: interrupts disabled
  7726.     GDTR, IDTR, LDTR, TR loaded
  7727.     SS:ESP must have at least 16 bytes space, and the entry point is
  7728.         required to set up a new stack before enabling interrupts
  7729.     EAX, ESI, DS, ES, FS, GS destroyed
  7730. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  7731.  
  7732. Note:    in protected mode, calling the protected-mode VCPI entry point with
  7733.       AX = DE0Ch
  7734.       DS = segment selector mapping entire linear address space obtained
  7735.         via AX=DE01h
  7736.       SS:ESP in first megabyte of linear memory
  7737.       STACK:QWORD  return address from FAR call to 32-bit segment
  7738.         DWORD  EIP
  7739.         DWORD  CS
  7740.         DWORD  reserved for EFLAGS
  7741.         DWORD  ESP
  7742.         DWORD  SS
  7743.         DWORD  ES
  7744.         DWORD  DS
  7745.         DWORD  FS
  7746.         DWORD  GS
  7747.       and interrupts disabled, will switch to virtual86 mode with
  7748.       interrupts disabled, all segment registers loaded, and EAX destroyed.
  7749.  
  7750. Format of system register values for switch to protected mode:
  7751. Offset    Size    Description
  7752.  00h    DWORD    value for CR3
  7753.  04h    DWORD    linear address in first megabyte of value for GDTR
  7754.  08h    DWORD    linear address in first megabyte of value for IDTR
  7755.  0Ch    WORD    value for LDTR
  7756.  0Eh    WORD    value for TR
  7757.  10h    PWORD    CS:EIP of protected mode entry-point
  7758. --------m-67DE0F-----------------------------
  7759. INT 67 - Netroom3 - ???
  7760.     AX = DE0Fh
  7761.     ???
  7762. Return: ???
  7763. Note:    called by Netroom's DPMI.EXE
  7764. --------m-67EF-------------------------------
  7765. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  7766.     AH = EFh
  7767.     AL = function (00h-12h,80h-8Fh)
  7768.     other register as appropriate for XMS function
  7769. Return: varies by function (see INT 2F/AX=4310h)
  7770. Note:    these functions appear to be equivalent to the XMS functions with the
  7771.       same numbers
  7772. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  7773. --------m-67FFA5-----------------------------
  7774. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  7775.     AX = FFA5h
  7776. Return: AX = 845Ah if loaded
  7777.         BX:CX -> API entry point
  7778. Notes:    this call is available even if EMM386 is not providing EMS
  7779.     if no other program has hooked INT 67, an alternate installation
  7780.       check is to test for the string
  7781.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  7782.       handler's segment; the word immediately preceding this string
  7783.       contains the offset of the API entry point
  7784. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  7785.  
  7786. Call API entry point with:
  7787.     AH = 00h get memory manager's status
  7788.         Return: AH = status
  7789.             bit 0: not active (OFF)
  7790.             bit 1: in "Auto" mode
  7791.     AH = 01h set memory manager's state
  7792.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  7793.     AH = 02h Weitek coprocessor support
  7794.         AL = subfunction
  7795.         00h get Weitek support state
  7796.             Return: AL = status
  7797.                 bit 0: Weitek coprocessor is present
  7798.                 bit 1: Weitek support is enabled
  7799.         01h turn on Weitek support
  7800.         02h turn off Weitek support
  7801.      --- v4.20-4.41 only ---
  7802.     AH = 03h Windows support???
  7803.         AL = subfunction (00h, 01h)
  7804.     AH = 04h print copyright notice to standard output
  7805.          (using INT 21/AH=09h)
  7806.     AH = 05h print available report
  7807.          (the one shown when running EMM386 from the DOS prompt)
  7808. --------m-67FFA5BX4345-----------------------
  7809. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  7810.     AX = FFA5h
  7811.     BX = 4345h ("CE")
  7812.     DX = subfunction
  7813.         0000h unshadow video ROM???
  7814.         0001h shadow video ROM???
  7815.         0002h map pages
  7816.         CX = number of pages (00h=one)
  7817.         ESI = linear address of first page to map into address space
  7818.         EDI = linear starting address at which pages are to be visible
  7819.         0003h get ???
  7820.         Return: DX = ??? (0-2)
  7821.         0004h BUG: crashes system due to fencepost error
  7822. Return: AH = 84h
  7823.     AL = status (84h = error, FFh = success)
  7824. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  7825.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  7826. SeeAlso: AX=FFA5h"EMM386"
  7827. --------I-68---------------------------------
  7828. INT 68 - Sangoma CCPOP 3270 resident module
  7829. SeeAlso: INT 67"Sangoma",INT 92"Sangoma"
  7830. --------N-68---------------------------------
  7831. INT 68 - Novell NetWare LU6.2
  7832. Note:    the installation check consists of testing for the signature string
  7833.       "APPC/PC" nine bytes before the interrupt handler
  7834. SeeAlso: AH=01h/SF=1B00h,AH=FAh
  7835. --------N-6801--SF1B00-----------------------
  7836. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DISPLAY
  7837.     AH = 01h subfn 1B00h
  7838.     DS:DX -> control block
  7839. Return: control block updated
  7840. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2B00h,INT 68"Novell"
  7841.  
  7842. Format of control block:
  7843. Offset    Size    Description
  7844.  00h 12 BYTEs    reserved
  7845.  0Ch    WORD    1B00h (verb "DISPLAY")
  7846.  0Eh  6 BYTEs    00h
  7847.  14h    DWORD    (big-endian) return code (see below)
  7848.  18h    WORD    00h
  7849.  1Ah  8 BYTEs    (big-endian) logical unit ID
  7850.  22h  8 BYTEs    (big-endian) partner logical unit name
  7851.  2Ah  8 BYTEs    (big-endian) mode name
  7852.  32h    BYTE    logical unit session limit
  7853.  33h    BYTE    partner logical unit session limit
  7854.  34h    BYTE    node maximum negotiable session limit
  7855.  35h    BYTE    current session limit
  7856.  36h    BYTE    minimum negotiated winner limit
  7857.  37h    BYTE    maximum negotiated loser limit
  7858.  38h    BYTE    active session count
  7859.  39h    BYTE    active CONWINNER session count
  7860.  3Ah    BYTE    active CONLOSER session count
  7861.  3Bh    BYTE    session termination count
  7862.  3Ch    BYTE    bit 7: SESSION_TERMINATION_TARGET_DRAIN
  7863.         bit 6: SESSION_TERMINATION_SOURCE_DRAIN
  7864.  
  7865. Values for return code:
  7866.  0000h    successful
  7867.  0001h    BAD_TP_ID
  7868.  0002h    BAD_CONV_ID
  7869.  0003h    bad logical unit ID
  7870.  0008h    no physical unit attached
  7871.  0110h    bad state
  7872.  01B1h    BAD_PART_LUNAME
  7873.  01B2h    bad mode name
  7874.  0201h    physical unit already active
  7875.  0211h    logical unit already active
  7876.  0212h    BAD_PART_SESS
  7877.  0213h    BAD_RU_SIZES
  7878.  0214h    BAD_MODE_SESS
  7879.  0216h    BAD_PACING_CNT
  7880.  0219h    EXTREME_RUS
  7881.  021Ah    SNASVCMG_1
  7882.  0223h    SSCP_CONNECTED_LU
  7883.  0230h    invalid change
  7884.  0243h    too many TPs
  7885.  0272h    adapter close failure
  7886.  0281h    GET_ALLOC_BAD_TYPE
  7887.  0282h    unsuccessful
  7888.  0283h    DLC failure
  7889.  0284h    unrecognized DLC
  7890.  0286h    duplicate DLC
  7891.  0301h    SSCP_PU_SESSION_NOT_ACTIVE
  7892.  0302h    data exceeds RU size
  7893.  0401h    invalid direction
  7894.  0402h    invalid type
  7895.  0403h    segment overlap
  7896.  0404h    invalid first character
  7897.  0405h    table error
  7898.  0406h    conversion error
  7899.  F0010000h    APPC disabled
  7900.  F0020000h    APPC busy
  7901.  F0030000h    APPC abended
  7902.  F0040000h    incomplete
  7903. --------N-6801--SF2000-----------------------
  7904. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH PHYSICAL UNIT
  7905.     AH = 01h subfn 2000h
  7906.     DS:DX -> control block
  7907. Return: control block updated
  7908. SeeAlso: AH=01h/SF=2100h,AH=01h/SF=2B00h
  7909.  
  7910. Format of control block:
  7911. Offset    Size    Description
  7912.  00h 12 BYTEs    reserved
  7913.  0Ch    WORD    2000h (verb "Attach Physical Unit")
  7914.  0Eh  6 BYTEs    00h
  7915.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  7916.  18h    WORD    00h
  7917.  1Ah    BYTE    version
  7918.  1Bh    BYTE    release
  7919.  1Ch  8 BYTEs    (big-endian) net name
  7920.  24h  8 BYTEs    (big-endian) physical unit name
  7921.  2Ch  8 BYTEs    00h
  7922.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7923.         (see also AH=01h/SF=2100h)
  7924.  38h    DWORD    00h
  7925.  3Ch    BYTE    00h RETURN_CONTROL: COMPLETE
  7926.         01h RETURN_CONTROL: INCOMPLETE
  7927. --------N-6801--SF2100-----------------------
  7928. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ATTACH LOGICAL UNIT
  7929.     AH = 01h subfn 2100h
  7930.     DS:DX -> control block
  7931. Return: control block updated
  7932. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2200h,AH=01h/SF=2B00h
  7933.  
  7934. Format of control block:
  7935. Offset    Size    Description
  7936.  00h 12 BYTEs    reserved
  7937.  0Ch    WORD    2100h (verb "Attach Logical Unit")
  7938.  0Eh  6 BYTEs    00h
  7939.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  7940.  18h    WORD    70  offset to partner logical unit record
  7941.  1Ah  8 BYTEs    (big-endian) logical unit name
  7942.  22h  8 BYTEs    (big-endian) logical unit ID
  7943.  2Ah    BYTE    logical unit local address
  7944.  2Bh    BYTE    logical unit session limit
  7945.  2Ch    DWORD    pointer to CREATE_TP_EXIT routine,
  7946.         FFFFFFFFh = reject incoming ALLOCATEs
  7947.         00000000h = queue ALLOCATEs
  7948.  30h    DWORD    00h
  7949.  34h    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh=don't log errors
  7950.  38h    DWORD    00h
  7951.  3Ch    BYTE    maximum TPs
  7952.  3Dh    BYTE    queue depth
  7953.  3Eh    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh=no pswd exit
  7954.  42h    DWORD    00h
  7955.  46h    WORD    total length of partner records
  7956.  48h    var    array of partner logical unit records (see below)
  7957.  
  7958. Format of partner logical unit record:
  7959. Offset    Size    Description
  7960.  00h    WORD    length of this partner logical unit record
  7961.  02h    WORD    42  offset to mode records
  7962.  04h  8 BYTEs    (big-endian) partner logical unit name
  7963.  0Ch    BYTE    partner logical unit security capabilities
  7964.         bit 7: already verified
  7965.         bit 6: conversation level security
  7966.         bit 5: session level security
  7967.  0Dh    BYTE    partner logical unit session limit
  7968.  0Eh    WORD    partner logical unit maximum MC_SEND_LL
  7969.  10h  8 BYTEs    (big-endian) partner logical unit DLC name
  7970.  18h    BYTE    partner logical unit adapter number
  7971.  19h 17 BYTEs    (counted string) partner logical unit adapter address
  7972.  2Ah    WORD    total length of mode records
  7973.  2Ch 16N BYTEs    array of mode records (see below)
  7974.  
  7975. Format of mode record:
  7976. Offset    Size    Description
  7977.  00h    WORD    16  length of this mode record
  7978.  02h  8 BYTEs    (big-endian) mode name
  7979.  0Ah    WORD    RU_SIZE high bound
  7980.  0Ch    WORD    RU_SIZE low bound
  7981.  0Eh    BYTE    mode maximum negotiable session limit
  7982.  0Fh    BYTE    pacing size for receive
  7983.  
  7984. Routines defined by LU_LU_PASSWORD_EXIT, CREATE_TP_EXIT, and SYSTEM_LOG_EXIT
  7985. pointers are called by pushing the DWORD pointer to the verb on the stack and
  7986. then performing a FAR call.
  7987.  
  7988. Format of ACCESS_LU_LU_PW verb:
  7989. Offset    Size    Description
  7990.  00h 12 BYTEs    reserved
  7991.  0Ch    WORD    1900h (verb "ACCESS_LU_LU_PW")
  7992.  0Eh  8 BYTEs    (big-endian) logical unit ID
  7993.  16h  8 BYTEs    (big-endian) logical unit name
  7994.  1Eh  8 BYTEs    (big-endian) partner logical unit name
  7995.  26h 17 BYTEs    (counted string) partner fully qualified logical unit name
  7996.  37h    BYTE    password available (0=no, 1=yes)
  7997.  38h  8 BYTEs    password
  7998.  
  7999. Format of CREATE_TP verb:
  8000. Offset    Size    Description
  8001.  00h 12 BYTEs    reserved
  8002.  0Ch    WORD    2300h (verb "CREATE_TP")
  8003.  0Eh  6 BYTEs    00h
  8004.  14h    DWORD    (big-endian) sense code (see below)
  8005.  18h  8 BYTEs    (big-endian) TP ID
  8006.  20h  8 BYTEs    (big-endian) logical unit ID
  8007.  28h    DWORD    (big-endian) conversation ID
  8008.  2Ch    BYTE    0 basic conversation, 1 mapped conversation
  8009.  2Dh    BYTE    0 no sync level, 1 confirm
  8010.  2Eh    BYTE    reserved
  8011.  2Fh 65 BYTEs    (counted string) transaction program name
  8012.  70h  6 BYTEs    00h
  8013.  76h    WORD    length of ERROR_LOG_DATA to return
  8014.  78h    DWORD    pointer to ERROR_LOG_DATA buffer
  8015.  7Ch  8 BYTEs    (big-endian) partner logical unit name
  8016.  84h 18 BYTEs    (counted string) partner fully qualified logical unit name
  8017.  96h  8 BYTEs    (big-endian) mode name
  8018.  9Eh 12 BYTEs    00h
  8019.  AAh 11 BYTEs    (counted string) password
  8020.  B5h 11 BYTEs    (counted string) user ID
  8021.  C0h    BYTE    0 verification should be performed
  8022.         1 already verified
  8023.  
  8024. Values for sense code:
  8025.  00000000h    Ok
  8026.  080F6051h    SECURITY_NOT_VALID
  8027.  084B6031h    TP_NOT_AVAIL_RETRY
  8028.  084C0000h    TP_NOT_AVAIL_NO_RETRY
  8029.  10086021h    TP_NAME_NOT_RECOGNIZED
  8030.  10086034h    CONVERSATION_TYPE_MISMATCH
  8031.  10086041h    SYNC_LEVEL_NOT_SUPPORTED
  8032.  
  8033. Format of SYSLOG verb:
  8034. Offset    Size    Description
  8035.  00h 12 BYTEs    reserved
  8036.  0Ch    WORD    2600h (verb "SYSLOG")
  8037.  0Eh 10 BYTEs    00h
  8038.  18h    WORD    (big-endian) type
  8039.  1Ah    DWORD    (big-endian) subtype
  8040.  1Eh    DWORD    pointer to ADDITIONAL_INFO
  8041.  22h    DWORD    (big-endian) conversation ID
  8042.  26h  8 BYTEs    (big-endian) TP ID
  8043.  2Eh  8 BYTEs    (big-endian) physical unit or logical unit name
  8044.  36h    WORD    length of data
  8045.  38h    DWORD    pointer to data
  8046.  3Ch    BYTE    00h
  8047. --------N-6801--SF2200-----------------------
  8048. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH LOGICAL UNIT
  8049.     AH = 01h subfn 2200h
  8050.     DS:DX -> control block
  8051. Return: control block updated
  8052. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2700h
  8053.  
  8054. Format of control block:
  8055. Offset    Size    Description
  8056.  00h 12 BYTEs    reserved
  8057.  0Ch    WORD    2200h (verb "Detach Logical Unit")
  8058.  0Eh  6 BYTEs    00h
  8059.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8060.  18h  8 BYTEs    (big-endian) logical unit ID
  8061.  20h    BYTE    00h
  8062. --------N-6801--SF2700-----------------------
  8063. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - DETACH PHYSICAL UNIT
  8064.     AH = 01h subfn 2700h
  8065.     DS:DX -> control block
  8066. Return: control block updated
  8067. SeeAlso: AH=01h/SF=2000h,AH=01h/SF=2100h,AH=01h/SF=2200h
  8068.  
  8069. Format of control block:
  8070. Offset    Size    Description
  8071.  00h 12 BYTEs    reserved
  8072.  0Ch    WORD    2700h (verb "Detach Physical Unit")
  8073.  0Eh  6 BYTEs    00h
  8074.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8075.  18h    BYTE    00h  type: hard
  8076.         01h  type: soft
  8077. --------N-6801--SF2B00-----------------------
  8078. INT 68 - APPC/PC - NETWORK DEVICE CONTROL - ACTIVATE DLC
  8079.     AH = 01h subfn 2B00h
  8080.     DS:DX -> control block
  8081. Return: control block updated
  8082. SeeAlso: AH=01h/SF=1B00h,AH=01h/SF=2000h
  8083.  
  8084. Format of control block:
  8085. Offset    Size    Description
  8086.  00h 12 BYTEs    reserved
  8087.  0Ch    WORD    2B00h (verb "Activate DLC")
  8088.  0Eh  6 BYTEs    00h
  8089.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8090.  18h  8 BYTEs    (big-endian) DLC name
  8091.  20h    BYTE    adapter number
  8092. --------N-6802--SF0100-----------------------
  8093. INT 68 - APPC/PC - CONNECTION CONTROL - ALLOCATE
  8094.     AH = 02h subfn 0100h
  8095.     DS:DX -> control block
  8096. Return: control block updated
  8097. SeeAlso: AH=02h/SF=0500h
  8098.  
  8099. Format of control block:
  8100. Offset    Size    Description
  8101.  00h 12 BYTEs    reserved
  8102.  0Ch    WORD    0100h (verb "Allocate" or "MC_Allocate")
  8103.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8104.         0 if basic verb
  8105.  0Fh  5 BYTEs    reserved (0)
  8106.  14h    WORD    (big-endian) primary return code (see below)
  8107.  16h    DWORD    (big-endian) error code (see below)
  8108.  1Ah  8 BYTEs    (big-endian) TP_ID
  8109.  22h    DWORD    (big-endian) conversation ID
  8110.  26h    BYTE    (MC_Allocate only) 0 basic conversation
  8111.                    1 mapped conversation
  8112.  27h    BYTE    SYNC_LEVEL (00h none, 01h confirm)
  8113.  28h    WORD    0000h
  8114.  2Ah    BYTE    00h RETURN_CONTROL: when session allocated
  8115.         01h RETURN_CONTROL: immediate
  8116.         02h RETURN_CONTROL: when session free
  8117.  2Bh  8 BYTEs    00h
  8118.  33h  8 BYTEs    (big-endian) partner logical unit name
  8119.  3Bh  8 BYTEs    (big-endian) mode name
  8120.  43h 65 BYTEs    (counted string) TP name
  8121.  84h    BYTE    security (00h none, 01h same, 02h pgm)
  8122.  85h 11 BYTEs    00h
  8123.  90h 11 BYTEs    (counted string) password
  8124.  9Bh 11 BYTEs    (counted string) user ID
  8125.  A6h    WORD    PIP_DATA length
  8126.  A8h    DWORD    pointer to PIP_DATA
  8127.  
  8128. Values for primary return code:
  8129.  0000h    successful
  8130.  0001h    parameter check
  8131.  0002h    state check
  8132.  0003h    allocation error
  8133.  0005h    deallocate abended
  8134.  0006h    deallocate abended program
  8135.  0007h    deallocate abended SVC
  8136.  0008h    deallocate abended timer
  8137.  0009h    deallocate normal return
  8138.  000Ah    data posting blocked
  8139.  000Bh    posting not active
  8140.  000Ch    PROG_ERROR_NO_TRUNC
  8141.  000Dh    PROG_ERROR_TRUNC
  8142.  000Eh    PROG_ERROR_PURGING
  8143.  000Fh    CONV_FAILURE_RETRY
  8144.  0010h    CONV_FAILURE_NO_RETRY
  8145.  0011h    SVC_ERROR_NO_TRUNC
  8146.  0012h    SVC_ERROR_TRUNC
  8147.  0013h    SVC_ERROR_PURGING
  8148.  0014h    unsuccessful
  8149.  0018h    CNOS partner logical unit reject
  8150.  0019h    conversation type mixed
  8151.  F001h    APPC disabled
  8152.  F002h    APPC busy
  8153.  F003h    APPC abended
  8154.  F004h    incomplete
  8155.  
  8156. Values for error code:
  8157.  0001h    bad TP ID
  8158.  0002h    bad conversation ID
  8159.  0004h    allocation error, no retry
  8160.  0005h    allocation error, retry
  8161.  0006h    data area crosses segment boundary
  8162.  0010h    bad TPN length
  8163.  0011h    bad CONV length
  8164.  0012h    bad SYNC level
  8165.  0013h    bad security selection
  8166.  0014h    bad return control
  8167.  0015h    SEC_TOKENS too big
  8168.  0016h    PIP_LEN incorrect
  8169.  0017h    no use of SNASVCMG
  8170.  0018h    unknown partner mode
  8171.  0031h    confirm: SYNC_NONE
  8172.  0032h    confirm: bad state
  8173.  0033h    confirm: NOT_LL_BDY
  8174.  0041h    confirmed: bad state
  8175.  0051h    deallocate: bad type
  8176.  0052h    deallocate: flush bad state
  8177.  0053h    deallocate: confirm bad state
  8178.  0055h    deallocate: NOT_LL_BDY
  8179.  0057h    deallocate: log LL_WRONG
  8180.  0061h    flush: not send state
  8181.  0091h    post on receipt: invalid length
  8182.  0092h    post on receipt: not in receive state
  8183.  0093h    post on receipt: bad fill
  8184.  00A1h    prepare to receive:invalid type
  8185.  00A2h    prepare to receive: unfinished LL
  8186.  00A3h    prepare to receive: not in send state
  8187.  00B1h    receive and wait: bad state
  8188.  00B2h    receive and wait: NOT_LL_BDY
  8189.  00B5h    receive and wait: bad fill
  8190.  00C1h    receive immediate: not in receive state
  8191.  00C4h    receive immediate: bad fill
  8192.  00E1h    request to send: not in receive state
  8193.  00F1h    send data: bad LL
  8194.  00F2h    send data: not in send state
  8195.  0102h    send error: log LL wrong
  8196.  0103h    send error: bad type
  8197.  0121h    test: invalid type
  8198.  0122h    test: not in receive state
  8199. --------N-6802--SF0300-----------------------
  8200. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRM
  8201.     AH = 02h subfn 0300h
  8202.     DS:DX -> control block
  8203. Return: control block updated
  8204. SeeAlso: AH=02h/SF=0400h
  8205.  
  8206. Format of control block:
  8207. Offset    Size    Description
  8208.  00h 12 BYTEs    reserved
  8209.  0Ch    WORD    0300h (verb "Confirm" or "MC_Confirm")
  8210.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8211.         0 if basic verb
  8212.  0Fh  5 BYTEs    reserved (0)
  8213.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8214.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8215.  1Ah  8 BYTEs    (big-endian) TP_ID
  8216.  22h    DWORD    (big-endian) conversation ID
  8217.  26h    BYTE    request to send received (0=no, 1=yes)
  8218. --------N-6802--SF0400-----------------------
  8219. INT 68 - APPC/PC - CONNECTION CONTROL - CONFIRMED
  8220.     AH = 02h subfn 0400h
  8221.     DS:DX -> control block
  8222. Return: control block updated
  8223. SeeAlso: AH=02h/SF=0300h
  8224.  
  8225. Format of control block:
  8226. Offset    Size    Description
  8227.  00h 12 BYTEs    reserved
  8228.  0Ch    WORD    0400h (verb "Confirmed" or "MC_Confirmed")
  8229.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8230.         0 if basic verb
  8231.  0Fh  5 BYTEs    reserved (0)
  8232.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8233.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8234.  1Ah  8 BYTEs    (big-endian) TP_ID
  8235.  22h    DWORD    (big-endian) conversation ID
  8236. --------N-6802--SF0500-----------------------
  8237. INT 68 - APPC/PC - CONNECTION CONTROL - DEALLOCATE
  8238.     AH = 02h subfn 0500h
  8239.     DS:DX -> control block
  8240. Return: control block updated
  8241. SeeAlso: AH=02h/SF=0100h,AH=02h/SF=0300h
  8242.  
  8243. Format of control block:
  8244. Offset    Size    Description
  8245.  00h 12 BYTEs    reserved
  8246.  0Ch    WORD    0500h (verb "Deallocate" or "MC_Deallocate")
  8247.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8248.         0 if basic verb
  8249.  0Fh  5 BYTEs    reserved (0)
  8250.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8251.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8252.  1Ah  8 BYTEs    (big-endian) TP_ID
  8253.  22h    DWORD    (big-endian) conversation ID
  8254.  26h    BYTE    00h
  8255.  27h    BYTE    type
  8256.         00h SYNC_LEVEL
  8257.         01h FLUSH
  8258.         02h ABEND_PROC
  8259.         03h ABEND_SVC
  8260.         04h ABEND_TIMER
  8261.         05h ABEND
  8262.  28h    WORD    (MC_Deallocate only) length of error log data
  8263.  2Ah    DWORD    (MC_Deallocate only) pointer to error log data
  8264. --------N-6802--SF0600-----------------------
  8265. INT 68 - APPC/PC - CONNECTION CONTROL - FLUSH
  8266.     AH = 02h subfn 0600h
  8267.     DS:DX -> control block
  8268. Return: control block updated
  8269. SeeAlso: AH=02h/SF=0300h
  8270.  
  8271. Format of control block:
  8272. Offset    Size    Description
  8273.  00h 12 BYTEs    reserved
  8274.  0Ch    WORD    0600h (verb "Flush" or "MC_Flush")
  8275.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8276.         0 if basic verb
  8277.  0Fh  5 BYTEs    reserved (0)
  8278.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8279.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8280.  1Ah  8 BYTEs    (big-endian) TP_ID
  8281.  22h    DWORD    (big-endian) conversation ID
  8282. --------N-6802--SF0700-----------------------
  8283. INT 68 - APPC/PC - CONNECTION CONTROL - GET ATTRIBUTES
  8284.     AH = 02h subfn 0700h
  8285.     DS:DX -> control block
  8286. Return: control block updated
  8287. SeeAlso: AH=02h/SF=0300h
  8288.  
  8289. Format of control block:
  8290. Offset    Size    Description
  8291.  00h 12 BYTEs    reserved
  8292.  0Ch    WORD    0700h (verb "Get_Attributes" or "MC_Get_Attributes")
  8293.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8294.         0 if basic verb
  8295.  0Fh  5 BYTEs    reserved (0)
  8296.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8297.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8298.  1Ah  8 BYTEs    (big-endian) TP_ID
  8299.  22h    DWORD    (big-endian) conversation ID
  8300.  26h  8 BYTEs    (big-endian) logical unit ID
  8301.  2Eh    BYTE    00h
  8302.  2Fh    BYTE    SYNC_LEVEL (0=none, 1=confirm)
  8303.  30h  8 BYTEs    (big-endian) mode name
  8304.  38h  8 BYTEs    (big-endian) own net name
  8305.  40h  8 BYTEs    (big-endian) own logical unit name
  8306.  48h  8 BYTEs    (big-endian) partner logical unit name
  8307.  50h 18 BYTEs    (counted string) partner's fully qualified logical unit name
  8308.  62h    BYTE    00h
  8309.  63h 11 BYTEs    (counted string) user ID
  8310. --------N-6802--SF0800-----------------------
  8311. INT 68 - APPC/PC - CONNECTION CONTROL - GET CONVERSATION TYPE
  8312.     AH = 02h subfn 0800h
  8313.     DS:DX -> control block
  8314. Return: control block updated
  8315. SeeAlso: AH=02h/SF=0300h
  8316.  
  8317. Format of control block:
  8318. Offset    Size    Description
  8319.  00h 12 BYTEs    reserved
  8320.  0Ch    WORD    0800h (verb "Get_Type")
  8321.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8322.         0 if basic verb
  8323.  0Fh  5 BYTEs    reserved (0)
  8324.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8325.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8326.  1Ah  8 BYTEs    (big-endian) TP_ID
  8327.  22h    DWORD    (big-endian) conversation ID
  8328.  26h    BYTE    (return) type (0=basic conversation, 1=mapped conversation)
  8329. --------N-6802--SF0900-----------------------
  8330. INT 68 - APPC/PC - CONNECTION CONTROL - POST ON RECEIPT
  8331.     AH = 02h subfn 0900h
  8332.     DS:DX -> control block
  8333. Return: control block updated
  8334. SeeAlso: AH=02h/SF=0A00h
  8335.  
  8336. Format of control block:
  8337. Offset    Size    Description
  8338.  00h 12 BYTEs    reserved
  8339.  0Ch    WORD    0900h (verb "Post_on_Receipt")
  8340.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8341.         0 if basic verb
  8342.  0Fh  5 BYTEs    reserved (0)
  8343.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8344.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8345.  1Ah  8 BYTEs    (big-endian) TP_ID
  8346.  22h    DWORD    (big-endian) conversation ID
  8347.  26h    WORD    maximum length
  8348.  28h    BYTE    fill (0=buffer, 1=LL)
  8349. --------N-6802--SF0A00-----------------------
  8350. INT 68 - APPC/PC - CONNECTION CONTROL - PREPARE TO RECEIVE
  8351.     AH = 02h subfn 0A00h
  8352.     DS:DX -> control block
  8353. Return: control block updated
  8354. SeeAlso: AH=02h/SF=0900h,AH=02h/SF=0B00h
  8355.  
  8356. Format of control block:
  8357. Offset    Size    Description
  8358.  00h 12 BYTEs    reserved
  8359.  0Ch    WORD    0A00h (verb "Prepare_to_Receive" or "MC_Prepare_to_Receive")
  8360.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8361.         0 if basic verb
  8362.  0Fh  5 BYTEs    reserved (0)
  8363.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8364.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8365.  1Ah  8 BYTEs    (big-endian) TP_ID
  8366.  22h    DWORD    (big-endian) conversation ID
  8367.  26h    BYTE    type (0=SYNC_LEVEL, 1=FLUSH)
  8368.  27h    BYTE    locks (0=short, 1=long)
  8369. --------N-6802--SF0B00-----------------------
  8370. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE AND WAIT
  8371.     AH = 02h subfn 0B00h
  8372.     DS:DX -> control block
  8373. Return: control block updated
  8374. SeeAlso: AH=02h/SF=0C00h,AH=02h/SF=0F00h
  8375.  
  8376. Format of control block:
  8377. Offset    Size    Description
  8378.  00h 12 BYTEs    reserved
  8379.  0Ch    WORD    0B00h (verb "Receive_and_Wait" or "MC_Receive_and_Wait")
  8380.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8381.         0 if basic verb
  8382.  0Fh  5 BYTEs    reserved (0)
  8383.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8384.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8385.  1Ah  8 BYTEs    (big-endian) TP_ID
  8386.  22h    DWORD    (big-endian) conversation ID
  8387.  26h    BYTE    type of information received (see below)
  8388.  27h    BYTE    (MC_Receive_and_Wait only) fill (0=buffer, 1=LL)
  8389.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  8390.  29h    WORD    maximum length
  8391.  2Bh    WORD    data length
  8392.  2Dh    DWORD    pointer to data
  8393.  
  8394. Values for type of information received:
  8395.  00h    data
  8396.  01h    data complete
  8397.  02h    data incomplete
  8398.  03h    confirm
  8399.  04h    confirm send
  8400.  05h    confirm deallocate
  8401.  06h    send
  8402. --------N-6802--SF0C00-----------------------
  8403. INT 68 - APPC/PC - CONNECTION CONTROL - RECEIVE IMMEDIATE
  8404.     AH = 02h subfn 0C00h
  8405.     DS:DX -> control block
  8406. Return: control block updated
  8407. SeeAlso: AH=02h/SF=0B00h,AH=02h/SF=0F00h
  8408.  
  8409. Format of control block:
  8410. Offset    Size    Description
  8411.  00h 12 BYTEs    reserved
  8412.  0Ch    WORD    0C00h (verb "Receive_Immediate" or "MC_Receive_Immediate")
  8413.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8414.         0 if basic verb
  8415.  0Fh  5 BYTEs    reserved (0)
  8416.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8417.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8418.  1Ah  8 BYTEs    (big-endian) TP_ID
  8419.  22h    DWORD    (big-endian) conversation ID
  8420.  26h    BYTE    type of information received (see AH=02h/SF=0B00h)
  8421.  27h    BYTE    (MC_Receive_Immediate only) fill (0=buffer, 1=LL)
  8422.  28h    BYTE    Request_to_Send_Received (0=no, 1=yes)
  8423.  29h    WORD    maximum length
  8424.  2Bh    WORD    data length
  8425.  2Dh    DWORD    pointer to data
  8426. --------N-6802--SF0E00-----------------------
  8427. INT 68 - APPC/PC - CONNECTION CONTROL - REQUEST TO SEND
  8428.     AH = 02h subfn 0E00h
  8429.     DS:DX -> control block
  8430. Return: control block updated
  8431. SeeAlso: AH=02h/SF=0F00h,AH=02h/SF=1000h
  8432.  
  8433. Format of control block:
  8434. Offset    Size    Description
  8435.  00h 12 BYTEs    reserved
  8436.  0Ch    WORD    0E00h (verb "Request_to_Send" or "MC_Request_to_Send")
  8437.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8438.         0 if basic verb
  8439.  0Fh  5 BYTEs    reserved (0)
  8440.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8441.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8442.  1Ah  8 BYTEs    (big-endian) TP_ID
  8443.  22h    DWORD    (big-endian) conversation ID
  8444. --------N-6802--SF0F00-----------------------
  8445. INT 68 - APPC/PC - CONNECTION CONTROL - SEND DATA
  8446.     AH = 02h subfn 0F00h
  8447.     DS:DX -> control block
  8448. Return: control block updated
  8449. SeeAlso: AH=02h/SF=0E00h,AH=02h/SF=1000h
  8450.  
  8451. Format of control block:
  8452. Offset    Size    Description
  8453.  00h 12 BYTEs    reserved
  8454.  0Ch    WORD    0F00h (verb "Send_Data" or "MC_Send_Data")
  8455.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8456.         0 if basic verb
  8457.  0Fh  5 BYTEs    reserved (0)
  8458.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8459.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8460.  1Ah  8 BYTEs    (big-endian) TP_ID
  8461.  22h    DWORD    (big-endian) conversation ID
  8462.  26h    BYTE    request to send received (0=no, 1=yes)
  8463.  27h    BYTE    00h
  8464.  28h    WORD    data length
  8465.  2Ah    DWORD    pointer to data
  8466. --------N-6802--SF1000-----------------------
  8467. INT 68 - APPC/PC - CONNECTION CONTROL - SEND ERROR
  8468.     AH = 02h subfn 1000h
  8469.     DS:DX -> control block
  8470. Return: control block updated
  8471. SeeAlso: AH=02h/SF=0F00h
  8472.  
  8473. Format of control block:
  8474. Offset    Size    Description
  8475.  00h 12 BYTEs    reserved
  8476.  0Ch    WORD    1000h (verb "Send_Error" or "MC_Send_Error")
  8477.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8478.         0 if basic verb
  8479.  0Fh  5 BYTEs    reserved (0)
  8480.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8481.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8482.  1Ah  8 BYTEs    (big-endian) TP_ID
  8483.  22h    DWORD    (big-endian) conversation ID
  8484.  26h    BYTE    request to send received (0=no, 1=yes)
  8485.  27h    BYTE    type (0=program, 1=SVC)
  8486.  28h    DWORD    00h
  8487.  2Ch    WORD    (MC_Send_Error only) LOG_DATA length
  8488.  2Eh    DWORD    (MC_Send_Error only) pointer to LOG_DATA
  8489. --------N-6802--SF1200-----------------------
  8490. INT 68 - APPC/PC - CONNECTION CONTROL - TEST
  8491.     AH = 02h subfn 1200h
  8492.     DS:DX -> control block
  8493. Return: control block updated
  8494. SeeAlso: AH=02h/SF=1300h
  8495.  
  8496. Format of control block:
  8497. Offset    Size    Description
  8498.  00h 12 BYTEs    reserved
  8499.  0Ch    WORD    1200h (verb "Test" or "MC_Test")
  8500.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8501.         0 if basic verb
  8502.  0Fh  5 BYTEs    reserved (0)
  8503.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8504.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8505.  1Ah  8 BYTEs    (big-endian) TP_ID
  8506.  22h    DWORD    (big-endian) conversation ID
  8507.  26h    BYTE    (MC_Test only) test (0=posted, 1=request_to_send received)
  8508.         Note: error code has different interpretations for:
  8509.             0 posted data
  8510.             1 posted not data (primary return code = 0)
  8511.             1 bad TP_ID (primary return code = 1)
  8512. --------N-6802--SF1300-----------------------
  8513. INT 68 - APPC/PC - CONNECTION CONTROL - WAIT
  8514.     AH = 02h subfn 1300h
  8515.     DS:DX -> control block
  8516. Return: control block updated
  8517. SeeAlso: AH=02h/SF=1200h
  8518.  
  8519. Format of control block:
  8520. Offset    Size    Description
  8521.  00h 12 BYTEs    reserved
  8522.  0Ch    WORD    1300h (verb "Wait")
  8523.  0Eh    BYTE    1 if MC_ (mapped conversation) form of verb
  8524.         0 if basic verb
  8525.  0Fh  5 BYTEs    reserved (0)
  8526.  14h    WORD    (big-endian) primary return code (see AH=02h/SF=0100h)
  8527.  16h    DWORD    (big-endian) error code (see AH=02h/SF=0100h)
  8528.  1Ah  8 BYTEs    (big-endian) TP_ID
  8529.  22h    DWORD    (big-endian) conversation ID
  8530.  26h    BYTE    number of conversations to wait on
  8531.         Note: error codes have interpretations as for AH=02h/SF=1200h
  8532. --------N-6803--SF2400-----------------------
  8533. INT 68 - APPC/PC - TP STARTED
  8534.     AH = 03h subfn 2400h
  8535.     DS:DX -> control block (see below)
  8536. Return: control block updated
  8537.  
  8538. Format of control block:
  8539. Offset    Size    Description
  8540.  00h 12 BYTEs    reserved
  8541.  0Ch    WORD    2400h (verb "TP Started")
  8542.  0Eh  6 BYTEs    00h
  8543.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8544.  18h    WORD    00h
  8545.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8546.  22h  8 BYTEs    (big-endian) TP ID
  8547. --------N-6803--SF2800-----------------------
  8548. INT 68 - APPC/PC - GET ALLOCATE
  8549.     AH = 03h subfn 2800h
  8550.     DS:DX -> control block (see below)
  8551. Return: control block updated
  8552.  
  8553. Format of control block:
  8554. Offset    Size    Description
  8555.  00h 12 BYTEs    reserved
  8556.  0Ch    WORD    2800h (verb "Get ALLOCATE")
  8557.  0Eh  6 BYTEs    00h
  8558.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8559.  18h    WORD    00h
  8560.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8561.  22h    BYTE    type (00h dequeue, 01h test)
  8562.  23h    DWORD    pointer to CREATE_TP record
  8563. --------N-6803--SF2A00-----------------------
  8564. INT 68 - APPC/PC - CHANGE LOGICAL UNIT
  8565.     AH = 03h subfn 2A00h
  8566.     DS:DX -> control block (see below)
  8567. Return: control block updated
  8568.  
  8569. Format of control block:
  8570. Offset    Size    Description
  8571.  00h 12 BYTEs    reserved
  8572.  0Ch    WORD    2A00h (verb "Change Logical Unit")
  8573.  0Eh  6 BYTEs    00h
  8574.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8575.  18h    WORD    00h
  8576.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8577.  22h    DWORD    pointer to CREATE_TP_EXIT routine
  8578.         FFFFFFFFh reject incoming ALLOCATEs
  8579.         00000000h queue ALLOCATEs
  8580.  26h    DWORD    00000000h
  8581.  2Ah    DWORD    pointer to SYSTEM_LOG_EXIT routine, FFFFFFFFh= don't log errors
  8582.  2Eh    DWORD    00000000h
  8583.  32h    BYTE    maximum TPs
  8584.  33h    BYTE    00h stop QUEUE_ALLOCATEs
  8585.         01h resume QUEUE_ALLOCATEs
  8586.  34h    DWORD    pointer to LU_LU_PASSWORD_EXIT routine, FFFFFFFFh = no exit
  8587.  38h    DWORD    00000000h
  8588. --------N-6804-------------------------------
  8589. INT 68 - APPC/PC - TRANSACTION PROCESSING
  8590.     AH = 04h
  8591.     DS:DX -> control block (see below)
  8592. Return: control block updated
  8593.  
  8594. Format of control block:
  8595. Offset    Size    Description
  8596.  00h 12 BYTEs    reserved
  8597.  0Ch    WORD    verb (action)
  8598.         2500h TP_ENDED
  8599.         2900h TP_VALID
  8600.  0Eh  6 BYTEs    00h
  8601.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8602.  18h    WORD    00h
  8603.  1Ah  8 BYTEs    (big-endian) TP_ID
  8604.  22h    DWORD    -> CREATE_TP record (only if verb = 2900h)
  8605. --------N-6805-------------------------------
  8606. INT 68 - APPC/PC - TRANSFER MESSAGE DATA
  8607.     AH = 05h
  8608.     DS:DX -> control block (see below)
  8609. Return: control block updated
  8610.  
  8611. Format of control block:
  8612. Offset    Size    Description
  8613.  00h 12 BYTEs    reserved
  8614.  0Ch    WORD    1C00h (verb "Transfer Message Data")
  8615.  0Eh    BYTE    00h user defined
  8616.         01h NMVT
  8617.         02h alert subvectors
  8618.         03h PDSTATS subvectors
  8619.  0Fh  5 BYTEs    00h
  8620.  14h    DWORD    (big-endian) return code (see AH=01h/SF=1B00h)
  8621.  18h 12 BYTEs    00h
  8622.  24h    BYTE    if bit 0 clear, add correlation subvector
  8623.         if bit 1 clear, add product set ID subvector
  8624.         if bit 2 clear, do SYSLOG
  8625.         if bit 3 clear, send SSCP_PU_SESSION
  8626.  25h    BYTE    00h
  8627.  26h    WORD    length of data
  8628.  28h  N BYTEs    data
  8629. --------N-6806-------------------------------
  8630. INT 68 - APPC/PC - CHANGE NUMBER OF SESSIONS
  8631.     AH = 06h
  8632.     DS:DX -> control block (see below)
  8633. Return: control block updated
  8634.  
  8635. Format of control block:
  8636. Offset    Size    Description
  8637.  00h 12 BYTEs    reserved
  8638.  0Ch    WORD    1500h (verb "Change Number of Sessions")
  8639.  0Eh  6 BYTEs    00h
  8640.  14h    WORD    (big-endian) primary return code (see AH=02h)
  8641.  16h    DWORD    (big-endian) secondary return code (see below, AH=01h/SF=1B00h)
  8642.  1Ah  8 BYTEs    (big-endian) logical unit ID
  8643.  22h  8 BYTEs    blanks
  8644.  2Ah  8 BYTEs    (big-endian) partner logical unit name
  8645.  32h  8 BYTEs    (big-endian) mode name
  8646.  3Ah    BYTE    bit 7: use MODE_NAME_SELECT_ALL rather than MODE_NAME
  8647.         bit 6: set negotiable values
  8648.  3Bh    BYTE    partner logical unit mode session limit
  8649.  3Ch    BYTE    minimum CONWINNERS_SOURCE
  8650.  3Dh    BYTE    maximum CONWINNERS_TARGET
  8651.  3Eh    BYTE    automatic activation
  8652.  3Fh    BYTE    00h
  8653.  40h    BYTE    bit 7: drain target
  8654.         bit 6: drain source
  8655.         bit 5: target responsible, not source
  8656.  
  8657. Values for secondary return code (see also AH=01h/SF=1B00h):
  8658.  0000h    accepted
  8659.  0001h    negotiated
  8660.  0003h    bad logical unit ID
  8661.  0004h    allocation failure, no retry
  8662.  0005h    allocation failure, retry
  8663.  0151h    can't raise limits
  8664.  0153h    all modes must reset
  8665.  0154h    bad SNASVCMG limits
  8666.  0155h    minimum greater than total
  8667.  0156h    mode closed (primary return code = 1)
  8668.     CNOS mode closed (primary return code = 18h)
  8669.  0157h    bad mode name (primary return code = 1)
  8670.     CNOS bad mode name (primary return code = 18h)
  8671.  0159h    reset SNA drains
  8672.  015Ah    single not SRC response
  8673.  015Bh    bad partner logical unit
  8674.  015Ch    exceeds maximum allowed
  8675.  015Dh    change SRC drains
  8676.  015Eh    logical unit detached
  8677.  015Fh    CNOS command race reject
  8678. --------N-6807-------------------------------
  8679. INT 68 - APPC/PC - PASSTHROUGH
  8680.     AH = 07h
  8681.     DS:DX -> control block (format depends on application subsystem)
  8682. Return: control block updated
  8683. SeeAlso: AH=FFh
  8684. ----------6847-------------------------------
  8685. INT 68 - MS Windows debugging kernel - OUTPUT STRING
  8686.     AH = 47h
  8687.     ES:SI -> string
  8688. Notes:    output a string (to inform a debugger of some events)
  8689.     KERNEL outputs "Windows Kernel Entry\r\n" on startup
  8690. SeeAlso: INT 41/AX=0012h
  8691. --------N-68FA-------------------------------
  8692. INT 68 - APPC/PC - ENABLE/DISABLE APPC
  8693.     AH = FAh
  8694.     AL bit 0 = 0 enable
  8695.            1 disable
  8696. SeeAlso: AH=FDh,INT 68"Novell"
  8697. --------N-68FB-------------------------------
  8698. INT 68 - APPC/PC - CONVERT
  8699.     AH = FBh
  8700.     DS:DX -> control block (see below)
  8701. Return: control block updated
  8702.  
  8703. Format of control block:
  8704. Offset    Size    Description
  8705.  00h 12 BYTEs    reserved
  8706.  0Ch    WORD    1A00h (verb "CONVERT")
  8707.  0Eh  6 BYTEs    00h
  8708.  14h    DWORD    (big-endian) return code
  8709.  18h    BYTE    conversion
  8710.         00h ASCII to EBCDIC
  8711.         01h EBCDIC to ASCII
  8712.  19h    BYTE    character set
  8713.         00h AE
  8714.         01h A
  8715.         02h G
  8716.  1Ah    WORD    length of string to convert
  8717.  1Ch    DWORD    pointer to source
  8718.  20h    DWORD    pointer to target
  8719. --------N-68FC-------------------------------
  8720. INT 68 - APPC/PC - ENABLE/DISABLE MESSAGE TRACING
  8721.     AH = FCh
  8722.     AL = 00h disable tracing
  8723.        = 01h enable tracing
  8724.         DX = number of bytes to keep (0=all)
  8725. SeeAlso: AH=FDh,AH=FEh
  8726. --------N-68FD-------------------------------
  8727. INT 68 - APPC/PC - ENABLE/DISABLE API VERB TRACING
  8728.     AH = FDh
  8729.     AL = 00h disable tracing
  8730.          01h enable tracing
  8731. SeeAlso: AH=FAh,AH=FCh,AH=FEh
  8732. --------N-68FE-------------------------------
  8733. INT 68 - APPC/PC - SET TRACE DESTINATION
  8734.     AH = FEh
  8735.     AL = trace destinations (see below)
  8736.     DS:DX -> trace stats record if AL bit 0 set
  8737. SeeAlso: AH=FCh,AH=FDh
  8738.  
  8739. Bitfields for trace destinations:
  8740. Bit(s)    Description
  8741.  0    storage (DS:DX -> trace stats record)
  8742.  1    display
  8743.  2    file (trace written to file OUTPUT.PC)
  8744.  3    printer
  8745.  
  8746. Format of Trace Statistics Record:
  8747. Offset    Size    Description
  8748.  00h    DWORD    pointer to storage trace buffer
  8749.  04h    WORD    max number of 80-byte records in trace
  8750.  06h    WORD    (high-order byte first!) current record number (must init to 0)
  8751.  08h    DWORD    (high-order byte first!) number of records written (init to 0)
  8752.  0Ch    DWORD    reserved
  8753. Note:    do not move record while trace is active
  8754. --------N-68FF-------------------------------
  8755. INT 68 - APPC/PC - SET PASSTHROUGH
  8756.     AH = FFh
  8757.     DS:DX -> passthrough exit routine
  8758. SeeAlso: AH=07h,INT 68"Novell"
  8759. --------b-69---------------------------------
  8760. INT 69 - Zenith AT BIOS - ???
  8761.    called by INT 09 handler
  8762. --------N-690100-----------------------------
  8763. INT 69 - DECnet DOS CTERM - INSTALLATION CHECK
  8764.     AX = 0100h
  8765. Return: AL = FFh if present
  8766. SeeAlso: AX=010Fh
  8767. --------N-690101-----------------------------
  8768. INT 69 - DECnet DOS CTERM - SEND BYTE
  8769.     AX = 0101h
  8770.     BL = character
  8771.     DX = session handle
  8772. Return: AH >= 80h on error
  8773. SeeAlso: AX=0102h
  8774. --------N-690102-----------------------------
  8775. INT 69 - DECnet DOS CTERM - READ BYTE
  8776.     AX = 0102h
  8777.     DX = session handle
  8778. Return: AH >= 80h on error
  8779.     AH < 80h if successful
  8780.         AL = character
  8781. SeeAlso: AX=0101h
  8782. --------N-690103-----------------------------
  8783. INT 69 - DECnet DOS CTERM - STATUS
  8784.     AX = 0103h
  8785.     DX = session handle
  8786. Return: AH status flags
  8787.         bit 7 session has been aborted
  8788.         bit 6 DECnet error
  8789.         bit 1 trace data available
  8790.         bit 0 receive data available
  8791.     AL = reason code if DECnet error (see below)
  8792. SeeAlso: AX=0104h
  8793.  
  8794. Values for reason code:
  8795.  00h    normal disconnect
  8796.  01h    unknown message from host
  8797.  02h    protocol violation from host
  8798.  03h    could not process the initiate message
  8799.  04h    error receiving message from host
  8800.  05h    error sending message to host
  8801.  06h    error checking for message from host
  8802.  07h    remote system does not support CTERM
  8803.  08h    remote system does not support correct protocol version
  8804.  09h    did not receive BIND message from host
  8805.  0Ah    could not send BIND message to host
  8806.  0Bh    no more sessions available
  8807.  0Ch    session does not exist
  8808.  0Dh    not enough memory to complete operation
  8809.  0Eh    connection has broken
  8810. Index:    error codes;DECnet DOS CTERM|DECnet DOS CTERM;error codes
  8811. --------N-690104-----------------------------
  8812. INT 69 - DECnet DOS CTERM - DECnet STATUS
  8813.     AX = 0104h
  8814.     DX = session handle
  8815. Return: AX = reason code (see AX=0103h)
  8816. Note:    use this call when AX=0103h returns a DECnet error
  8817. SeeAlso: AX=0103h
  8818. --------N-690105-----------------------------
  8819. INT 69 - DECnet DOS CTERM - OPEN SESSION
  8820.     AX = 0105h
  8821.     DS:BX -> ASCIZ node name
  8822.     ES:DX -> buffer for session control block (see INT 6A/AH=D0h)
  8823. Return: AX <= 0 on error
  8824.     AX > 0 session handle
  8825. SeeAlso: AX=0103h,AX=0106h,AX=010Ah
  8826. --------N-690106-----------------------------
  8827. INT 69 - DECnet DOS CTERM - CLOSE SESSION
  8828.     AX = 0106h
  8829.     DX = session handle
  8830. Return: AH = 00h good close
  8831.        other error code (see AX=0103h)
  8832. SeeAlso: AX=0103h,AX=0105h
  8833. --------N-69010A-----------------------------
  8834. INT 69 - DECnet DOS CTERM - GET SESSION CONTROL BLOCK SIZE
  8835.     AX = 010Ah
  8836. Return: AX = length of session control block in bytes
  8837. SeeAlso: AX=0105h
  8838. --------N-69010B-----------------------------
  8839. INT 69 - DECnet DOS CTERM - GET DECnet SOCKET
  8840.     AX = 010Bh
  8841.     DX = session handle
  8842. Return: AX > 0    DECnet socket for the session
  8843.        = 0    no match for handle
  8844. --------N-69010F-----------------------------
  8845. INT 69 - DECnet DOS CTERM - DEINSTALL CTERM
  8846.     AX = 010Fh
  8847. Return: AH = 00h successful uninstall
  8848.        other error code
  8849. Note:    CTERM must have been the last TSR loaded in order to deinstall it
  8850. SeeAlso: AX=0100h
  8851. Index:    uninstall;DECnet DOS CTERM
  8852. --------N-690A-------------------------------
  8853. INT 69 - DECnet DOS 2.1+ - DATA LINK LAYER
  8854.     AH = 0Ah
  8855.     AL = function (see below)
  8856.     ES:BX -> Datalink Communication Block
  8857. Return: AX = status (see below)
  8858. SeeAlso: INT 6D"DECnet"
  8859.  
  8860. Values for function:
  8861.  00h    initialize
  8862.  01h    open portal
  8863.  02h    close portal
  8864.  03h    enable multicast address
  8865.  04h    disable multicast address
  8866.  05h    transmit
  8867.  06h    request transmit buffer
  8868.  07h    deallocate transmit buffer
  8869.  08h    read channel status
  8870.  09h    read datalink portal list
  8871.  0Ah    read information about a datalink portal
  8872.  0Bh    read and/or clear counters
  8873.  0Ch    request to boot from a network server
  8874.  0Dh    enable Ethernet channel
  8875.  0Eh    disable Ethernet channel
  8876.  0Fh    start MOP/send a System ID message
  8877.  10h    stop MOP
  8878.  11h    get DECPARM
  8879.  12h    set DECPARM
  8880.  13h    external loopback
  8881.  
  8882. Values for status:
  8883.  00h    successful
  8884.  01h    hardware failed to initialize
  8885.  02h    channel state was not off (must be off to execute that command)
  8886.  03h    channel state is off (must be on to execute that command)
  8887.  04h    address not set
  8888.  05h    hardware missing
  8889.  06h    buffer too small
  8890.  07h    no more buffers available
  8891.  08h    no more resources available
  8892.  09h    promiscuous receiver active
  8893.  0Ah    non exclusive
  8894.  0Bh    unrecognized portal
  8895.  0Ch    protocol type in use
  8896.  0Dh    not a valid Multicast address
  8897.  0Eh    outstanding calls
  8898.  0Fh    hardware doesn't support receiving bad frames
  8899.  10h    none outstanding
  8900.  11h    no events
  8901.  12h    broken
  8902.  13h    buffer quota exceeded
  8903.  14h    already initialized
  8904.  15h    loopback failure
  8905. Index:    error codes;DECnet DOS|DECnet DOS;error codes
  8906.  
  8907. Format of Datalink Communication Block
  8908. Offset    Type    Description
  8909.  00h    WORD    portal ID
  8910.  02h  6 BYTEs    source address
  8911.  08h  6 BYTEs    destination address
  8912.  0Eh    DWORD    buffer pointer
  8913.  12h    WORD    buffer length
  8914.  14h    WORD    operation
  8915.  16h    BYTE    pad flag (used on open)
  8916.         00h no pad
  8917.         01h pad
  8918.  17h    BYTE    mode flag (used on open)
  8919.         00h 802.3
  8920.         01h Ethernet
  8921.         02h promiscuous
  8922.  18h    DWORD    line status change function
  8923.  1Ch    DWORD    received data function
  8924.  20h    DWORD    transmitted data function
  8925.  24h    BYTE    maximum outstanding transmits/receives
  8926.  25h  2 BYTEs    protocol type
  8927.  27h    WORD    buffers lost
  8928. --------N-694001-----------------------------
  8929. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8930.     AX = 4001h
  8931. Return: CF clear
  8932.     AX = 0000h
  8933.     ES:SI -> ???
  8934. Note:    INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  8935.       the signature "SYSV" immediately before the interrupt handler serves
  8936.       as the installation check
  8937. SeeAlso: AX=4002h
  8938. Index:    installation check;10NET SYSSVC
  8939. --------N-694002-----------------------------
  8940. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8941.     AX = 4002h
  8942.     ???
  8943. Return: ???
  8944. Note:    INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  8945.       the signature "SYSV" immediately before the interrupt handler serves
  8946.       as the installation check
  8947. --------N-694101-----------------------------
  8948. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8949.     AX = 4101h
  8950. Return: CF clear
  8951.     ES:SI -> ???
  8952. SeeAlso: AX=4102h,AX=4103h,AX=4104h
  8953. --------N-694102-----------------------------
  8954. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8955.     AX = 4102h
  8956.     ???
  8957. Return: ???
  8958. --------N-694103-----------------------------
  8959. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8960.     AX = 4103h
  8961.     ???
  8962. Return: ???
  8963. --------N-694104-----------------------------
  8964. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8965.     AX = 4104h
  8966.     ???
  8967. Return: ???
  8968. --------N-6942-------------------------------
  8969. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8970.     AH = 42h
  8971.     AL = function (01h-14h)
  8972.     ???
  8973. Return: ???
  8974. --------N-6943-------------------------------
  8975. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8976.     AH = 43h
  8977.     AL = function (01h-05h)
  8978.     ???
  8979. Return: ???
  8980. --------N-6944-------------------------------
  8981. INT 69 - 10NET v5.0 - SYSSVC.COM - ???
  8982.     AH = 44h
  8983.     AL = function (01h-03h)
  8984.     ???
  8985. Return: ???
  8986. --------N-6949-------------------------------
  8987. INT 69 - 10NET v5.0 - SYSSVC.COM - BUG
  8988.     AH = 49h
  8989. Note:    due to a fencepost error, this function branches to hyperspace
  8990. SeeAlso: AX=4001h,AH=FFh
  8991. --------G-696996-----------------------------
  8992. INT 69 - ISR.COM v1.00 - SPECIFY INTERRUPT HANDLER
  8993.     AX = 6996h
  8994.     DS:DX -> interrupt handler or 0000h:0000h to disable
  8995. Return: AX = 9669h
  8996. Program: ISR (Interrupt Service Reflector) is a TSR by Rich Bono which permits
  8997.       a program to provide hardware interrupt handlers even while being
  8998.       debugged with a debugger that swaps interrupt vectors during
  8999.       debugging.
  9000. Note:    the interrupt vector which is to be reflected is set at installation
  9001.       time and cannot be changed
  9002. --------N-69FF-------------------------------
  9003. INT 69 - 10NET v5.0 - SYSSVC.COM - SIGNAL SYSTEM ERROR
  9004.     AH = FFh
  9005. Return: never???
  9006. Notes:    displays "System Error" message and register dump, then halts system
  9007.     INT 69 is the default, and may be set to any interrupt from 60h-7Fh;
  9008.       the signature "SYSV" immediately before the interrupt handler serves
  9009.       as the installation check
  9010. SeeAlso: AX=4001h,AH=49h
  9011. --------!------------------------------------
  9012.